Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

remindmail

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

remindmail

Easily schedule reminders to be emailed

  • 1!2.1.2
  • PyPI
  • Socket score

Maintainers
1

RemindMail: Reminder Management Tool

A powerful CLI designed to help you schedule and organize reminders efficiently and effectively. Easily manage your To Do list, schedule one-time or recurring reminders, add notes, and view and manage upcoming reminders, all from the comfort of your terminal.

Table of Contents

Features

RemindMail offers a variety of features to enhance your productivity:

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

Dependencies

  • zsh or bash
  • python3
  • cabinet
    • used to store the remind.md path and other important variables
  • a configured SMTP server (many email providers offer this, but Gmail will not work)

Installation and Setup

  pip install remindmail

  # adjust path accordingly
  pip install -r requirements.md

  cabinet --configure # see below for instructions

Minimal Install (experimental)

curl -s https://api.github.com/repos/tylerjwoodfin/remindmail/releases/latest \
| grep "browser_download_url" \
| cut -d '"' -f 4 \
| xargs curl -L -o remindmail.pex

sudo mv remindmail.pex /usr/local/bin/remind

remind -m cabinet --config

Cabinet Configuration

  • cabinet is installed as a dependency.

  • initialize using cabinet --configure; see cabinet's README for details.

  • add the properties below using cabinet -e:

{
  "remindmail": {
      "path": {
          "file": "/path/to/remind.md"
      }
  },
  "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
  }
}
  • Gmail will not work due to their security restrictions.
  • it's very bad practice to store your password in plaintext; take appropriate precautions.

Scheduling Reminder Emails

  • 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 friday --save: Schedule a new reminder programatically, saves without confirmation
  • 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.
    • use --dry-run to see what would be sent without actually sending anything.
    • 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 your configured editor
  • remind --list-all: Lists all reminders in remind.md. Useful for debugging.
  • cabinet --config: Configures cabinet

Using the TUI to Schedule Reminders

  • unless --save is used, a confirmation will appear.
  • use arrow keys (or j and k in VI Mode) to navigate.
  • arrow left and right to iterate through:
    • type
    • value
    • frequency
    • offset

VI Mode and Keybindings

  • when the confirmation appears, use j or k to enter VI mode.
  • j and k navigate up and down; h and l navigate left and right.
  • use i to exit VI mode.
  • use q to cancel the reminder.

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).

Good Examples

  • These are some examples of how your remind.md file could look.
[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 # comments will be ignored in titles
- 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
<b>Will be sent every Friday. Reminder notes support HTML.</b>

[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.

Disclaimer

  • This is a non-commercial, open-source project; your data is your responsibility. Take appropriate precautions to shield sensitive information.
  • I cannot be held responsible for any data loss or other issues that may arise from using this tool.

Author Info

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc