Skip to main content

Easily schedule reminders to be emailed

Project description

RemindMail: Reminder Management Tool

Welcome to RemindMail, a powerful CLI tool designed to help you schedule and organize reminders efficiently. This utility leverages natural language for setting reminder times and includes functionalities to view, generate, and manage reminders directly from your terminal.

features

RemindMail offers a variety of features to enhance your productivity:

  • Easily manage your To Do list from anywhere in the terminal
  • Schedule one-time or recurring reminders to your inbox
  • Add notes or "for later" reminders
  • View and manage upcoming reminders

notable dependencies

  • Linux (Raspberry Pis work great!)
  • cabinet
    • used to store JSON data; specifically, used to store the remind.md path and other important variables
  • a unique, non-Gmail address specifically for this project
    • do not use an email address that you use in other areas of your life
    • do not re-use a password you've used anywhere else; use a unique password.
  • Python3

setup

  python3 -m pip install remindmail

  # adjust path accordingly
  pip install -r /path/to/requirements.md

  cabinet config # cabinet must be configured properly

cabinet config

  • you need to install and configure cabinet

    • initialize using cabinet config; see cabinet's README for details
    cabinet -p path remindmail file </path/to/remind.md>
    cabinet -p email from <your unique and non-Gmail email address>
    cabinet -p email from_name <your name (can be anything)>
    cabinet -p from_pw <your email password>
    cabinet -p email to <where reminder will send to>
    cabinet -p email smtp_server <your SMTP server>
    cabinet -p email port <your email port>
    cabinet -p email imap_server <your IMAP server>
    
    • note that Gmail will not work due to their security restrictions.

    • it's very bad practice to store your password in plaintext; for this reason, never sync this file.

    • always use a unique email address specifically for this, and especially use a unique password.

    • example below:

    {
      "email": {
          "from": "YourUniqueAndNonGmailEmailAddress",
          "from_pw": "YourPassword",
          "from_name": "Your Name",
          "to": "RemindersSentToThisEmailAddress",
          "smtp_server": "your domain's smtp server",
          "imap_server": "your domain's imap server",
          "port": 465
      }
    }
    

scheduling reminder checks

  • type "crontab -e" in the terminal and add something like:

    • 0 4 * * * remind --generate (sends matching reminders at 4AM)
    • 0 4 * * * remind --later (sends emails scheduled for later)
  • your setup may require remind to be replaced with something like:

    • 0 4 * * * python3 /path/to/site-packages/remind/remind.py --generate
  • this function requires use of SMTP; please ensure you've configured this correctly.

usage

  • remind: Schedule a new reminder interactively
  • remind --title 'reminder title' --when 'june 20': Schedule a new reminder programatically
  • remind --title 'reminder title' --when '2024-06-20': Schedule a new reminder programatically
  • remind --title 'reminder title' --when 'every 3 weeks': Schedule a new reminder programatically
  • remind --title 'reminder title' --when 'friday': Schedule a new reminder programatically
  • remind --title 'reminder title' --when 'every 2 Mondays': Schedule a new reminder programatically
  • remind --title 'reminder title' --when 'now': Sends an email immediately
  • remind -h (or --help): Displays usage information.
  • remind -g (or --generate): Generates all reminders scheduled for today.
    • I recommend setting up a crontab.
  • remind --later: Emails reminders that are marked with [later]
  • remind --st (or --show-tomorrow): Lists reminders in remind.md that target tomorrow's date
  • remind --sw (or --show-week): Lists reminders for the next 7 days
  • remind -e (or --edit): Opens remind.md in vim
  • cabinet --config: Configures cabinet

some notes about offset

  • when scheduling a reminder, you can adjust the offset field to shift reminder schedules.
  • For instance, one reminder may be "every 2 weeks", and the other can be every 2 weeks with an offset of 1, resulting in alternating reminders.

The offset is determined by the epoch date.

  • The Epoch time is the number of seconds since January 1, 1970, UTC.
  • For example, if the current time is 1619394350, then today is Sunday, April 25, 2021 at 11:45:50PM UTC.
  • The "week number" is calculated by {epochTime}/60/60/24/7.
    • 1619394350 /60/60/24/7 ~= 2677
    • 2677 % 3 == 1, meaning scheduling a reminder for [W,3] would be sent last week, but not this week (or next week or the week after).

remind.md

These are some examples of how your remind.md file will look.

good examples

[w,1] Laundry

  • this will send each week on Sunday.

[w,2] Sheets

  • This will be sent every 2 weeks on Sunday.

[m,3] Review Budget

  • This will be sent on the 1st of every 3 months.

[m,3,2] Change AC filter

  • every 3 months, with an offset of 2 (see notes about Offset below)

[2024-05-03]d send report

  • send on May 3
  • This will be deleted after it's sent, as indicated by ]d.

[09-20,1] Get a Flu Shot This will be sent on September 20. By the way, anything underneath a reminder tag is considered a note and will be sent in the body of the email.

[dow,fri] Submit Timesheet Will be sent every Friday. Reminder notes support HTML.

[dow,fri,2] Payday!

  • This will send every other Friday.

[dow,thu,1]c ls > /home/tyler/directory.log

  • Reminders ending with ]c will be executed as commands, rather than sent as emails.

[d,1] 40 Daily Pushups This is sent each day.

[later] play diplomacy board game This isn't sent, but it is saved for later and can be sent using remind --later.

Contributing

Contributions to RemindMail are welcome! Please feel free to fork the repository, make your changes, and submit a pull request.

License

RemindMail is released under the MIT license. For more details, see the LICENSE file in the repository.

Author Info

Tyler Woodfin https://tyler.cloud feedback-remindmail@tyler.cloud

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

remindmail-2024.4.15.2.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

remindmail-2024.4.15.2-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

Details for the file remindmail-2024.4.15.2.tar.gz.

File metadata

  • Download URL: remindmail-2024.4.15.2.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for remindmail-2024.4.15.2.tar.gz
Algorithm Hash digest
SHA256 1afcde8e66e5db98c2374a928bf3f0eca579a21d1be0e57288fe8bf19ec44e92
MD5 9559c5e8b2d54a7f6f858726457bb8d8
BLAKE2b-256 e28b9b616d92d335f8adbe6e0542a0685f2fa6dbf0ac07ac6f18d5670dbdc824

See more details on using hashes here.

File details

Details for the file remindmail-2024.4.15.2-py3-none-any.whl.

File metadata

File hashes

Hashes for remindmail-2024.4.15.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7cdc4ceddcbab4abadcb97454bc7083b2376e70b86accc4e2317a3e2cc6b6090
MD5 84c375c2a4aa1eb5f348c3a455374abd
BLAKE2b-256 7295c5ae9ea604ebf4457a5b1bbc6b697f24aeb59aa4b0c30708b01a3d0f002d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page