send mail from linux terminal in one line
Categories:
Sending Emails from the Linux Terminal in a Single Line
Learn how to quickly send emails directly from your Linux command line using various tools and techniques, perfect for scripting and quick notifications.
Sending emails directly from the Linux terminal can be incredibly useful for system administrators, developers, and anyone looking to automate notifications or send quick messages without a full-fledged email client. This article explores several one-liner commands and methods to achieve this, covering common scenarios and tools available on most Linux distributions.
The mail
Command (mailx/mailutils)
The mail
command, often provided by mailx
or mailutils
packages, is a classic and versatile tool for sending emails from the command line. It's simple to use for basic text emails and supports more advanced features like attachments and custom headers. Ensure you have a Mail Transfer Agent (MTA) like Postfix or Sendmail configured on your system for mail
to function correctly.
echo "This is the email body." | mail -s "Subject of the Email" recipient@example.com
Sending a basic email with a subject and body.
mail -s "Important Update" -a /path/to/document.pdf recipient@example.com < /path/to/body.txt
Sending an email with an attachment and a body from a file.
mail
to work, your system needs a properly configured MTA (e.g., Postfix, Sendmail). If you're on a fresh install, you might need to install and configure one first. For example, on Debian/Ubuntu: sudo apt install mailutils
.Using sendmail
Directly
The sendmail
command is the underlying MTA often used by mail
. While mail
provides a user-friendly wrapper, you can interact with sendmail
directly for more control, though it's slightly more verbose. This method is particularly useful when you need to specify headers manually or integrate with existing scripts that expect sendmail
's input format.
printf "Subject: My Direct Email\nFrom: sender@example.com\nTo: recipient@example.com\n\nThis is the body of my direct email." | sendmail -t
Sending an email using sendmail
with manually specified headers.
sendmail
directly, ensure your headers are correctly formatted (e.g., Subject:
, From:
, To:
followed by a blank line before the body). Incorrect formatting can lead to delivery issues.Leveraging mutt
for Advanced Features
mutt
is a powerful, text-based email client that can also be used for sending emails from the command line. It excels in handling attachments, different content types, and more complex email structures, making it a favorite for scripting when mail
isn't sufficient. It's often not installed by default but is available in most package repositories.
echo "Hello from mutt!" | mutt -s "Mutt Test Email" -a /path/to/image.jpg -- recipient@example.com
Sending an email with an attachment using mutt
.
mutt -s "HTML Email" -e 'set content_type="text/html"' recipient@example.com < /path/to/html_body.html
Sending an HTML email using mutt
.
flowchart TD A[Start: Script/User Initiates Email] --> B{Choose Tool: mail, sendmail, mutt?} B -->|Basic Text/Subject| C[Use `mail` command] B -->|Direct MTA Control/Headers| D[Use `sendmail` command] B -->|Attachments/HTML/Advanced| E[Use `mutt` command] C --> F[Pipe Body to `mail`] D --> G[Pipe Formatted Headers/Body to `sendmail -t`] E --> H[Pipe Body to `mutt` with options] F --> I[MTA Processes Email] G --> I H --> I I --> J[Email Delivered to Recipient] J --> K[End]
Decision flow for choosing the right command-line email tool.