Skip to main content

Project Status: Active - The project has reached a stable, usable state and is being actively developed. CI Status coverage pyversions MIT License

GitHub | PyPI | Issues | Changelog

daemail (pronounced “DEE-mayl”, like “e-mail” but with a D) is a Python script built on top of python-daemon for running a normally-foreground command in the background and e-mailing its output (by default, the combined stdout and stderr) once it’s done.

Installation

daemail requires Python 3.8 or higher. Just use pip for Python 3 (You have pip, right?) to install daemail and its dependencies:

python3 -m pip install daemail

Usage

daemail [<options>] <command> [<arg> ...]

daemail runs command with the given arguments in the background and sends an e-mail once the command finishes. The sending of the e-mail is performed by the outgoing library, and thus an outgoing configuration file must be created with settings for sending e-mail before daemail can be used.

Options

-c FILE, --config FILE

Read sending configuration for the outgoing library from FILE; defaults to outgoing’s default configuration file

-C DIR, --chdir DIR

Change to DIR after daemonizing but before running the command; defaults to the current directory

-D MBOX, --dead-letter MBOX

If an error occurs when trying to send, append the e-mail (including a description of the error) to the file MBOX; defaults to dead.letter. If the file already exists, it must be a valid mbox file.

-e ENCODING, --encoding ENCODING

Expect the stdout (and stderr, if --split is not in effect) of the command to be in the given encoding; defaults to the preferred encoding returned by Python’s locale.getpreferredencoding. If decoding fails, the output will be attached to the e-mail as an application/octet-stream file named “stdout”.

When --mime-type or --stdout-filename is also given, this option has no effect other than to set the default value for --stderr-encoding.

-E ENCODING, --stderr-encoding ENCODING

Expect the stderr of the command to be in the given encoding; defaults to the value specified via --encoding or its default. If decoding fails, the stderr output will be attached to the e-mail as an application/octet-stream file named “stderr”.

This option only has an effect when --split is given, either implicitly or explicitly.

--foreground, --fg

Run everything in the foreground instead of daemonizing. Note that command output will still be captured rather than displayed.

-f ADDRESS, --from ADDRESS, --from-addr ADDRESS

Set the From: address of the e-mail. The address may be given in either the form “address@example.com” or “Real Name <address@example.com>.” If not specified, daemail will not set the From: header and will expect the mail command or SMTP server to do it instead.

-F, --failure-only

Only send an e-mail if the command failed to run or exited with a nonzero status

-l LOGFILE, --logfile LOGFILE

If an unexpected & unhandleable fatal error occurs after daemonization, append a report to LOGFILE; defaults to daemail.log

Such an error is a deficiency in the program; please report it!

-M MIME-TYPE, --mime-type MIME-TYPE, --mime MIME-TYPE

Attach the standard output of the command to the e-mail as an inline attachment with the given MIME type. The MIME type may include parameters, e.g., --mime-type "text/html; charset=utf-16". If --stdout-filename is not also supplied, the attachment is named “stdout”. Implies --split.

-n, --nonempty

Do not send an e-mail if the command exited successfully and both the command’s stdout & stderr were empty or not captured

--no-stdout

Don’t capture the command’s stdout; implies --split

--no-stderr

Don’t capture the command’s stderr; implies --split

-S, --split

Capture the command’s stdout and stderr separately rather than as a single stream

--stdout-filename FILENAME

Attach the standard output of the command to the e-mail as an inline attachment with the given filename. If --mime-type is not also supplied, the MIME type of the attachment is deduced from the file extension, falling back to application/octet-stream for unknown extensions. Implies --split.

-t ADDRESS, --to ADDRESS, --to-addr ADDRESS

Set the recipient of the e-mail. The address may be given in either the form “address@example.com” or “Real Name <address@example.com>.”

This option is required. It may be given multiple times in order to specify multiple recipients.

-Z, --utc

Show start & end times in UTC instead of local time

Caveats

  • Input cannot be piped to the command, as standard input is closed when daemonizing. If you really need to pass data on standard input, run a shell, e.g.:

    daemail bash -c 'command < file'

    or:

    daemail bash -c 'command | other-command'

Release files for daemail 0.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for daemail 0.7.1
File Size Uploaded
daemail-0.7.1.tar.gz 19.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for daemail 0.7.1
File Interpreter ABI Platform
daemail-0.7.1-py3-none-any.whl Python 3 none any Details

Total release size: 33.4 kB

Release files / daemail-0.7.1.tar.gz

Download URL daemail-0.7.1.tar.gz
Size 19.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9d3d5331dbac22f1802cdb91aa3d4675fb2467ebf582ee0d633f6764cacf694c
BLAKE2b-256 checksum
How to use checksums
fd286b2a573e6d0148bdee18b5b2e55dd2ddc1654e0cb388441e2496d8c2dc27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.13.0

Release files / daemail-0.7.1-py3-none-any.whl

Download URL daemail-0.7.1-py3-none-any.whl
Size 13.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cd9f1ec8a384120f5b9601fd581234461b483c5e0598e08d076c917da86ad0d0
BLAKE2b-256 checksum
How to use checksums
703d074d46fba40f6ce6500287a7c5ca1ead673fb1b025ce096be596642f7778
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.13.0

Release history Release notifications | RSS feed

This release

0.7.1 This release

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page