remindmail


Nameremindmail JSON
Version 1!2.0.1 PyPI version JSON
download
home_pagehttps://github.com/tylerjwoodfin/remindmail
SummaryEasily schedule reminders to be emailed
upload_time2024-11-13 15:23:54
maintainerNone
docs_urlNone
authorTyler Woodfin
requires_python>=3.6
license: OSI Approved :: MIT License
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # RemindMail: Reminder Management Tool
Welcome to RemindMail, a powerful CLI designed to help you schedule and organize reminders efficiently and effectively. RemindMail is a Python-based tool that allows you to schedule reminders for yourself and receive them in your inbox. With RemindMail, you can easily manage your To Do list, schedule one-time or recurring reminders, add notes, and view and manage upcoming reminders.

## 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
- Python3
- [cabinet](https://pypi.org/project/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.

# Setup

```bash
  python3 -m pip install remindmail

  # adjust path accordingly
  python3 -m pip install -r requirements.md

  cabinet --configure # cabinet must be configured properly
```

## Cabinet Configuration
- [cabinet](https://github.com/tylerjwoodfin/cabinet) is installed as a dependency.

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

- configure cabinet with the properties below using `cabinet -e`:
```json
{
  "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
  }
}
```

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

## 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. 
  - 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
- `cabinet --config`: Configures [cabinet](https://pypi.org/project/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).

## remind.md

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

## Good Examples
```markdown
[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
<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.

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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/tylerjwoodfin/remindmail",
    "name": "remindmail",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": "Tyler Woodfin",
    "author_email": "feedback-remindmail@tyler.cloud",
    "download_url": "https://files.pythonhosted.org/packages/70/ca/0d11c15e063b50b23578cff6ae533daa111b293e302a43a64b29d21fe8c1/remindmail-1!2.0.1.tar.gz",
    "platform": null,
    "description": "# RemindMail: Reminder Management Tool\nWelcome to RemindMail, a powerful CLI designed to help you schedule and organize reminders efficiently and effectively. RemindMail is a Python-based tool that allows you to schedule reminders for yourself and receive them in your inbox. With RemindMail, you can easily manage your To Do list, schedule one-time or recurring reminders, add notes, and view and manage upcoming reminders.\n\n## Features\nRemindMail offers a variety of features to enhance your productivity:\n\n- Easily manage your To Do list from anywhere in the terminal\n- Send one-time or recurring reminders to your inbox\n- Add notes or \"for later\" reminders\n- View and manage upcoming reminders\n\n# Dependencies\n- Python3\n- [cabinet](https://pypi.org/project/cabinet/)\n  - used to store JSON data; specifically, used to store the `remind.md` path and other important variables\n- a unique, non-Gmail address specifically for this project\n  - do not use an email address that you use in other areas of your life\n  - do not re-use a password you've used anywhere else; use a unique password.\n\n# Setup\n\n```bash\n  python3 -m pip install remindmail\n\n  # adjust path accordingly\n  python3 -m pip install -r requirements.md\n\n  cabinet --configure # cabinet must be configured properly\n```\n\n## Cabinet Configuration\n- [cabinet](https://github.com/tylerjwoodfin/cabinet) is installed as a dependency.\n\n- initialize using `cabinet --configure`; see cabinet's README for details.\n\n- configure cabinet with the properties below using `cabinet -e`:\n```json\n{\n  \"remindmail\": {\n      \"path\": {\n          \"file\": \"/path/to/remind.md\"\n      }\n  },\n  \"email\": {\n      \"from\": \"YourUniqueAndNonGmailEmailAddress\",\n      \"from_pw\": \"YourPassword\",\n      \"from_name\": \"Your Name\",\n      \"to\": \"RemindersSentToThisEmailAddress\",\n      \"smtp_server\": \"your domain's smtp server\",\n      \"imap_server\": \"your domain's imap server\",\n      \"port\": 465\n  }\n}\n```\n\n- note that Gmail will _not_ work due to their security restrictions.\n- it's very bad practice to store your password in plaintext; for this reason, never sync this file.\n- always use a unique email address specifically for this, and _especially_ use a unique password.\n\n## Scheduling Reminder Emails\n\n- type \"crontab -e\" in the terminal and add something like:\n  - `0 4 * * * remind --generate` (sends matching reminders at 4AM)\n  - `0 4 * * * remind --later` (sends emails scheduled for later)\n\n- your setup may require `remind` to be replaced with something like:\n  - `0 4 * * * python3 /path/to/site-packages/remind/remind.py --generate`\n\n- this function requires use of SMTP; please ensure you've configured this correctly.\n\n# Usage\n\n- `remind`: Schedule a new reminder interactively\n- `remind --title 'reminder title' --when 'june 20'`: Schedule a new reminder programatically\n- `remind --title 'reminder title' --when '2024-06-20'`: Schedule a new reminder programatically\n- `remind --title 'reminder title' --when 'every 3 weeks'`: Schedule a new reminder programatically\n- `remind --title 'reminder title' --when 'friday'`: Schedule a new reminder programatically\n- `remind --title 'reminder title' --when friday --save`: Schedule a new reminder programatically, saves without confirmation\n- `remind --title 'reminder title' --when 'every 2 Mondays'`: Schedule a new reminder programatically\n- `remind --title 'reminder title' --when 'now'`: Sends an email immediately\n- `remind -h` (or `--help`): Displays usage information.\n- `remind -g` (or `--generate`): Generates all reminders scheduled for today. \n  - I recommend setting up a crontab.\n- `remind --later`: Emails reminders that are marked with `[later]`\n- `remind --st` (or `--show-tomorrow`): Lists reminders in remind.md that target tomorrow's date\n- `remind --sw` (or `--show-week`): Lists reminders for the next 7 days\n- `remind -e` (or `--edit`): Opens `remind.md` in your configured editor\n- `cabinet --config`: Configures [cabinet](https://pypi.org/project/cabinet/)\n\n## Using the TUI to Schedule Reminders\n- unless `--save` is used, a confirmation will appear.\n- use arrow keys (or `j` and `k` in VI Mode) to navigate.\n- arrow left and right to iterate through:\n  - type\n  - value\n  - frequency\n  - offset\n\n### VI Mode and Keybindings\n- when the confirmation appears, use `j` or `k` to enter VI mode.\n- `j` and `k` navigate up and down; `h` and `l` navigate left and right.\n- use `i` to exit VI mode.\n- use `q` to cancel the reminder.\n\n## Notes about `Offset`\n\n- when scheduling a reminder, you can adjust the `offset` field to shift reminder schedules.\n- 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.\n\nThe offset is determined by the epoch date.\n- The Epoch time is the number of seconds since January 1, 1970, UTC.\n- For example, if the current time is 1619394350, then today is Sunday, April 25, 2021 at 11:45:50PM UTC.\n- The \"week number\" is calculated by {epochTime}/60/60/24/7.\n  - 1619394350 /60/60/24/7 ~= 2677\n  - 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).\n\n## remind.md\n\nThese are some examples of how your remind.md file will look.\n\n## Good Examples\n```markdown\n[w,1] Laundry\n- this will send each week on Sunday. \n\n[w,2] Sheets\n- This will be sent every 2 weeks on Sunday.\n\n[m,3] Review Budget\n- This will be sent on the 1st of every 3 months.\n\n[m,3,2] Change AC filter\n- every 3 months, with an offset of 2\n(see notes about Offset below)\n\n[2024-05-03]d send report\n- send on May 3\n- This will be deleted after it's sent, as indicated by `]d`.\n\n[09-20,1] Get a Flu Shot\nThis will be sent on September 20.\nBy the way, anything underneath a reminder tag is considered a note and will\nbe sent in the body of the email.\n\n[dow,fri] Submit Timesheet\n<b>Will be sent every Friday. Reminder notes support HTML.</b>\n\n[dow,fri,2] Payday!\n- This will send every other Friday.\n\n[dow,thu,1]c ls > /home/tyler/directory.log\n- Reminders ending with `]c` will be executed as commands, rather than\nsent as emails.\n\n[d,1] 40 Daily Pushups\nThis is sent each day.\n\n[later] play diplomacy board game\nThis isn't sent, but it is saved for later and can be sent using\n`remind --later`.\n```\n\n# Contributing\nContributions to RemindMail are welcome! Please feel free to fork the repository, make your changes, and submit a pull request.\n\n# License\nRemindMail is released under the MIT license. For more details, see the LICENSE file in the repository.\n\n# Author Info\nTyler Woodfin\nhttps://tyler.cloud\nfeedback-remindmail@tyler.cloud\n",
    "bugtrack_url": null,
    "license": ": OSI Approved :: MIT License",
    "summary": "Easily schedule reminders to be emailed",
    "version": "1!2.0.1",
    "project_urls": {
        "Homepage": "https://github.com/tylerjwoodfin/remindmail"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "32cbf7078a056898871850906d79597d6696734885368236dfc4b53a988d6510",
                "md5": "0338bc918d3bc3c8f08c7130159ec254",
                "sha256": "41da9220b1a4ce0ea7268feadaaef38a2370d76c75cab15e266a6b257d48171b"
            },
            "downloads": -1,
            "filename": "remindmail-1!2.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0338bc918d3bc3c8f08c7130159ec254",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 25164,
            "upload_time": "2024-11-13T15:23:53",
            "upload_time_iso_8601": "2024-11-13T15:23:53.026871Z",
            "url": "https://files.pythonhosted.org/packages/32/cb/f7078a056898871850906d79597d6696734885368236dfc4b53a988d6510/remindmail-1!2.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "70ca0d11c15e063b50b23578cff6ae533daa111b293e302a43a64b29d21fe8c1",
                "md5": "9584c97a39d060d7e766cbc36ead39ea",
                "sha256": "1ddaf5c700ccef2b95b26d5b0502b316bab6f18ea2851e16bf0da743185ccc71"
            },
            "downloads": -1,
            "filename": "remindmail-1!2.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "9584c97a39d060d7e766cbc36ead39ea",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 25605,
            "upload_time": "2024-11-13T15:23:54",
            "upload_time_iso_8601": "2024-11-13T15:23:54.216834Z",
            "url": "https://files.pythonhosted.org/packages/70/ca/0d11c15e063b50b23578cff6ae533daa111b293e302a43a64b29d21fe8c1/remindmail-1!2.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-13 15:23:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tylerjwoodfin",
    "github_project": "remindmail",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "remindmail"
}
        
Elapsed time: 0.59730s