Lightweight Gmail notification wrapper
Project description
sygmail
Lightweight wrapper for sending Gmail notifications with simple defaults and a .env config.
Features
- Load settings from
.envand environment variables - Save settings from code (
persist=True) - Defaults for subject/contents with
{script_name}placeholder - Optional auto-attachments from a path
Install
pip install sygmail
Requirements
- Python 3.9+
- Dependencies:
yagmail,keyring
Quick start
from sygmail import Sygmail
syg = Sygmail()
syg.configure(
from_addr="you@gmail.com",
app_password="app-password",
persist=True,
)
syg.send()
.env keys
SYGMAIL_FROM=you@gmail.com
SYGMAIL_APP_PASSWORD=app-password
SYGMAIL_TO=to@example.com
SYGMAIL_SUBJECT=Process Completed
SYGMAIL_CONTENTS={script_name} has finished running.
SYGMAIL_ATTACHMENTS_PATH=/path/to/folder
If you use keyring, you can leave SYGMAIL_APP_PASSWORD empty.
Keyring usage:
python -m sygmail config set --from you@gmail.com --app-password "app-password" --use-keyring
python -m sygmail send
Notes:
- Passwords are stored under the service name
sygmailwith thefromaddress as the username. - If
SYGMAIL_APP_PASSWORDis set, it is used first; otherwise keyring is used. - Storage uses your OS credential manager (macOS Keychain, Windows Credential Manager, or a Linux keyring).
- To remove a stored password, delete it from your OS credential manager.
Defaults
- Subject:
Process Completed - Contents:
{script_name} has finished running.
Reset back to defaults:
syg.reset_subject_contents(persist=True)
Attachments behavior
- If
attachmentsis provided insend(), it is used as-is. - If
attachmentsis not provided, andSYGMAIL_ATTACHMENTS_PATHis set, files under that path are attached (files only, no folders).
Examples:
syg.send(attachments=["./a/file.txt"]) # use only this
syg.send(attachments=[]) # explicitly no attachments
syg.send() # auto-attach from SYGMAIL_ATTACHMENTS_PATH if set
CLI
Use python -m sygmail for now:
python -m sygmail send
Options:
python -m sygmail send \
--env .env \
--from you@gmail.com \
--to to@example.com \
--subject "Process Completed" \
--contents "[sygmail notification]" \
--attachments /path/to/file \
--attachments-path /path/to/folder/
- If
--contentsis omitted, CLI uses[sygmail notification]without editing.env.
Common examples:
python -m sygmail send
python -m sygmail send --subject "Job Done" --contents "[sygmail notification]"
python -m sygmail send --attachments /path/to/file-a.txt /path/to/file-b.txt
python -m sygmail send --attachments-path /path/to/folder/
python -m sygmail config set --from you@gmail.com --app-password "app-password"
python -m sygmail config set --from you@gmail.com --app-password "app-password" --use-keyring
python -m sygmail config show
Config commands:
python -m sygmail config set \
--env .env \
--from you@gmail.com \
--app-password "app-password" \
--to to@example.com \
--subject "Process Completed" \
--contents "{script_name} has finished running." \
--attachments-path /path/to/folder/
python -m sygmail config reset --env .env
python -m sygmail config show --env .env
python -m sygmail config show --env .env --raw
API
Sygmail(env_path=".env")
Sygmail.configure(
from_addr=None,
from_=None,
app_password=None,
to=None,
subject=None,
contents=None,
attachments_path=None,
persist=True,
)
Sygmail.reset_subject_contents(persist=True)
Sygmail.send(
from_addr=None,
from_=None,
to=None,
subject=None,
contents=None,
attachments=None,
attachments_path=None,
**kwargs,
)
Notes
- Use a Gmail app password (not your normal password).
- Settings are stored in
.envin the current working directory by default. - If
tois omitted, the message is sent to the same address asfrom_addr.
Security
- Do not commit
.envto public repos. - Treat app passwords like secrets.
Operations
- Prefer
chmod 600 .envon shared machines. - Use
--envto separate configs per project.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sygmail-0.1.2.tar.gz.
File metadata
- Download URL: sygmail-0.1.2.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b50811d66e8c3575b840e7af061ff381ee37cfaf0fbacdde9ffe663cc254ee23
|
|
| MD5 |
b17688e56985028951492ae79ceae9f0
|
|
| BLAKE2b-256 |
e42d11e0f026f0da4fd620d378ad4ec10090d1f3997af9f5a70b237d063eaf40
|
File details
Details for the file sygmail-0.1.2-py3-none-any.whl.
File metadata
- Download URL: sygmail-0.1.2-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e9d0d9689b782c41254ec7d058cf6b0caaf50962cd821313c9b102421365a9e
|
|
| MD5 |
a058d6dffd7495808a475eef32d3bec5
|
|
| BLAKE2b-256 |
b330679f13471b9318e73c7bf31de1882d0e64f47dc3113ee70c105207b79ff4
|