{"id":15817335,"url":"https://github.com/sumnerevans/offlinemsmtp","last_synced_at":"2026-06-06T02:09:14.492Z","repository":{"id":134313308,"uuid":"442593506","full_name":"sumnerevans/offlinemsmtp","owner":"sumnerevans","description":"msmtp wrapper allowing for offline use","archived":false,"fork":false,"pushed_at":"2024-07-29T15:17:41.000Z","size":395,"stargazers_count":2,"open_issues_count":9,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-06T05:41:14.889Z","etag":null,"topics":["msmtp","offline"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sumnerevans.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"sumnerevans","liberapay":"sumner"}},"created_at":"2021-12-28T21:57:53.000Z","updated_at":"2024-05-06T18:29:21.000Z","dependencies_parsed_at":"2023-12-14T18:28:46.425Z","dependency_job_id":"f64ba1da-dd58-4246-9ad0-1c6068b80710","html_url":"https://github.com/sumnerevans/offlinemsmtp","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumnerevans%2Fofflinemsmtp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumnerevans%2Fofflinemsmtp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumnerevans%2Fofflinemsmtp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumnerevans%2Fofflinemsmtp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sumnerevans","download_url":"https://codeload.github.com/sumnerevans/offlinemsmtp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252882547,"owners_count":21819150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["msmtp","offline"],"created_at":"2024-10-05T05:41:05.575Z","updated_at":"2026-06-06T02:09:12.246Z","avatar_url":"https://github.com/sumnerevans.png","language":"Python","funding_links":["https://github.com/sponsors/sumnerevans","https://liberapay.com/sumner","https://liberapay.com/sumner/donate"],"categories":[],"sub_categories":[],"readme":"![offlinemsmtp](./logo/logo.png)\n\nAllows you to use `msmtp` offline by queuing email until you have an internet\nconnection.\n\n[![Lint and Build](https://github.com/sumnerevans/offlinemsmtp/actions/workflows/build.yaml/badge.svg)](https://github.com/sumnerevans/offlinemsmtp/actions/workflows/build.yaml)\n[![PyPi Version](https://img.shields.io/pypi/v/offlinemsmtp?color=4DC71F\u0026logo=python\u0026logoColor=fff)](https://pypi.org/project/offlinemsmtp/)\n[![AUR Version](https://img.shields.io/aur/version/offlinemsmtp?logo=linux\u0026logoColor=fff)](https://aur.archlinux.org/packages/offlinemsmtp/)\n[![LiberaPay Donation Status](https://img.shields.io/liberapay/receives/sumner.svg?logo=liberapay)](https://liberapay.com/sumner/donate)\n\n## Features\n\n* Runs as a daemon and (at a configurable time interval) attempts to send the\n  mail in the queue directory.\n* Drop-in replacement for `msmtp` in your mutt config.\n* Only attempts to send the queued email message if it can connect to the\n  configured SMTP server.\n* When a new email message comes into the queue and you are already online,\n  `offlinemsmtp` will send it immediately.\n* Integrates with system notifications so that you are notified when mail is\n  being sent.\n* Disable/enable sending of mail by the presence/absence of a file. This is\n  useful if you want to have some sort of \"offline mode\".\n\n## Installation\n\nUsing [PyPi](https://pypi.org/project/offlinemsmtp/):\n\n    pip install --user offlinemsmtp\n\nOn Arch Linux, you can install the `offlinemsmtp` package from the\n[AUR](https://aur.archlinux.org/packages/offlinemsmtp/). For example, if you use\n`yay`:\n\n    yay -S offlinemsmtp\n\n## Run the daemon using systemd\n\nCreate a file called ``~/.config/systemd/user/offlinemsmtp.service`` with the\nfollowing content (if you installed via the AUR package, a service file was\nalready created for you in ``/usr/lib/systemd/user`` so you only need to do this\nstep if you want to customize the parameters passed to the daemon):\n\n    [Unit]\n    Description=offlinemsmtp\n\n    [Service]\n    ExecStart=/usr/bin/offlinemsmtp --daemon\n\n    [Install]\n    WantedBy=default.target\n\nThen, enable and start `offlinemsmtp` using systemd:\n\n    systemctl --user daemon-reload\n    systemctl --user enable --now offlinemsmtp\n\n## Usage\n\n`offlinemsmtp` has two components: a daemon for listening to the outbox folder\nand sending the mail when the network is available and a enqueuer for adding\nmail to the send queue.\n\nTo run the daemon in the current command line (this is useful for testing), run\nthis command::\n\n    offlinemsmtp --daemon\n\nTo enqueue emails, use the `offlinemsmtp` executable without `--daemon`. All\nparameters (with a few caveats described below in [Command Line\nArguments](#command-line-arguments)) are forwarded on to `msmtp`. Anything\npassed in via standard in will be forwarded over standard in to `msmtp` when the\nmail is sent.\n\n### Configuration with Mutt\n\nTo use offlinemsmtp with mutt, just replace `msmtp` in your mutt configuration\nfile with `offlinemsmtp`. Here is an example:\n\n    set sendmail = \"offlinemsmtp -a personal\"\n\n### Command Line Arguments\n\nofflinemsmtp accepts a number of command line arguments:\n\n- `-h`, `--help` - shows a help message and exits.\n- `-o DIR`, `--outbox-directory DIR` - set the directory to use as the outbox.\n  Defaults to `~/.offlinemsmtp-outbox`.\n- `-d`, `--daemon` - run the offlinemsmtp daemon.\n- `-s`, `--silent` - set to disable all logging and notifications.\n- `-i INTERVAL`, `--interval INTERVAL` - set the interval (in seconds) at which\n  to attempt to flush the send queue. Defaults to 60.\n- `-C FILE`, `--file FILE` - the msmtp configuration file to use.\n- `--send-mail-file FILE` - only send mail if this file exists (defaults to\n  `None` meaning that no file is required for mail sending to be enabled)\n- All remaining arguments are passed to `msmtp`. The `-C` argument is\n  automatically passed to `msmtp`.\n- Anything after a special `--` argument will be passed to `msmtp`. This allows\n  you to pass arguments that may conflict with `offlinemsmtp` arguments to\n  `msmtp`.\n\n## Contributing\n\nSee the [CONTRIBUTING.md](./CONTRIBUTING.md) document for details on how to\ncontribute to the project.\n\n## Other projects\n\n- https://github.com/marlam/msmtp-mirror/tree/master/scripts/msmtpqueue - this\n  is included with `msmtp`, but doesn't have all of the features that I want.\n- https://github.com/dcbaker/py-mailqueued - looks cool, I didn't see it when I\n  was researching, but it's probably better than my implementation, even thought\n  I had a lot of fun doing mine.\n- https://github.com/venkytv/msmtp-offline - it's written in Ruby.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsumnerevans%2Fofflinemsmtp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsumnerevans%2Fofflinemsmtp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsumnerevans%2Fofflinemsmtp/lists"}