A program that emails the user the weather, any tasks on their to-do list, their events, puzzles, a word of the day, a quote of the day, and more at a designated time daily. (Only Todoist and Vikunja are currently supported, but I am working on more. Feel free to request any todo app with an issue.)
To change the time of day that the email is sent, use the MINUTE and HOUR environment variables. All times should be in 24hr (0-23 for hours, 0-59 for minutes) time.
At any time, you may trigger an email send through the Web UI.
If you have any specific questions or issues setting it up, please feel free to email me at support@dailysummaryemail.com. While I will try my best to respond quickly, I can make no guarantees on time nor a guaranteed solution, but I will try my best.
Run this in Docker, using the provided docker-compose.yml
. Use the .env.example
as a guideline for the .env
file,
however, all these options are not necessary to put in the .env
file, they can be added later in the web UI. The only
necessary
variables to set are the ENCRYPTION_KEY
and PASSWORD
. The set PASSWORD
is used to log into the web UI.
If you initially use env vars to fill out all the data, you may remove them after the first run as long as there is a
config.json
location configured (./data
in docker-compose.yml
).
See .env.example for an example .env file.
- RECIPIENT_EMAIL: The recipient's email
- RECIPIENT_NAME: The name that the email is addressed to
- SENDER_EMAIL: The sending email
- SMTP_USERNAME: The username of the sending account on the SMTP server
- SMTP_PASSWORD: The password of the sending account on the SMTP server
- SMTP_HOST: The host of the SMTP server (e.g. smtp.gmail.com)
- SMTP_PORT: The port of the SMTP server (defaults to 465 for SSL)
- OPENAI_API_KEY: Your OpenAI API key. Used to generate a short summary of the email.
- ENABLE_SUMMARY: True or False. Toggle for if a summary should be generated. (defaults to true)
- UNIT_SYSTEM: METRIC or IMPERIAL. (defaults to metric)
- TIME_SYSTEM: 24HR or 12HR. (defaults to 24HR)
- LATITUDE: The latitude you wish to use for the weather and timezone.
- LONGITUDE: The longitude you wish to use for the weather and timezone.
- ADDRESS: The address of which the weather and timezone should be used. (Use quotes)
- WEATHER: True or False. Enables weather. (defaults to false)
- TODOIST_API_KEY: Your Todoist API key
- VIKUNJA_API_KEY: Your Vikunja API key VIKUNJA_BASE_URL: Your Vikunja base url
- WEBCAL_LINKS: Link(s) for webcal or ics calendars of which the events should appear in the email. Use one string, seperated by commas. Do not use quotes.
- RSS_LINKS: Link(s) for rss feeds of which the entries should appear in the email. Use one string, seperated by commas. Do not use quotes.
- PUZZLES: True or False. Enables puzzles. (defaults to false)
- PUZZLES_ANSWERS: True or False. Enables puzzle answers. Overridden by False on PUZZLES. (defaults to false)
- WOTD: True or False. Enables the Word of the Day. (defaults to false)
- QOTD: True or False. Enables the Quote of the Day. (defaults to false)
- HOUR: The hour to send the email. (defaults to the time when the container started)
- MINUTE: The minute to send the email. (defaults to the time when the container started)
- TIMEZONE: Timezone as a string. (not required if a latitude and longitude or an address are given, but will override that timezone. Ensure that it is spelt correctly.)
- LOGGING_LEVEL: Level for logging (defaults to INFO). Options: 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'.
- ENCRYPTION_KEY: Fernet encryption key for passwords and API keys. You can use this website to generate them.
- PASSWORD: Web UI password. Must be alphanumerical.
- SECRET_KEY: Random alphanumerical string. Used for session cookies of the Web UI.
NOTE: You MUST provide either a coordinate pair or an address.
The OpenAI Integration allows a 2-3 sentence summary of the email near the top.
Under the current API pricing (last updated 11/13/24), this integration costs about $0.104025 USD per year of operation, with very long emails (1250+170 input tokens per day, a maximum of 120 tokens of output per day). The output is limited at 120 tokens per day. The model used is GPT-4o mini, which allows for it to cost much less than a larger model. The current pricing is $0.150 / 1M input tokens and $0.600 / 1M output tokens.
To set this up, make an account with OpenAI, or log in with one, and get your API key. Note: The OpenAI API is a different product that ChatGPT, ChatGPT Plus does not grant access to the OpenAI API.
- Geocoding provided by Nominatim.
- Weather data provided by Open-Meteo
- Quotes provided by ZenQuotes API.
- Versioning follows semver.
- If you want news articles, add their RSS feed as a feed. For example, the Wall Street Journal supplies RSS feeds, and
other newspapers likely do too (WSJ World News Feed).
- I do not claim responsibility for any content in this feed. I do not support any particular news paper, nor wish to make any political comments on any work. This feed was choosen because it was shown to be close to the center of the political spectrum.
If you find this program to be valuable, and have all your personal financials taken care of, consider buying me a coffee me through GitHub Sponsors!