The key to becoming an advanced Linux user is to use more of the command line and less of the GUI; more of the keyboard and less of the mouse! As the diaspora of Linux command-line tools grows, not only administrative but several non-administrative, in fact, crucial day-to-day tasks, are performed using the command line.
In this article, we will learn how to send an email with a file attachment using the mail command in Linux.
Pre-Requisites
You must have already configured your Email with SMTP in your Linux machine. This Email and server will be made use of by the ‘Mail‘ program which we will learn about today.
Sending an Email from Command Line in Linux
The program ‘mail’ can be used to send an Email from the command line, along with file attachments with the Email. This program is not available by default, and can be installed in Debian and Red Hat-based distributions using:
$ sudo apt install mailutils [On Debian/Ubuntu/Mint] $ sudo dnf install mailx [On RedHat/CentOS/Fedora]
The syntax to send an Email using ‘mail’ is as follows:
$ echo "Email Message Body" | mail -s "Subject of the Email" [email protected]
You can see that we are using the echo command to output the message body and redirecting this output to the ‘mail’ command. This is because the ‘mail’ command reads message body input from the standard input.
Sending an Email with File Attachment from Command Line
Similarly, to attach a file with the mail, the argument '-A'
can be used:
$ echo "Email Message Body" | mail -s "Subject of the Email" [email protected] -A <file to be attached>
Sending an Email to Multiple Recipients from Command Line
To send the email to multiple recipients, simply specify the multiple Email IDs separated by a comma.
$ echo "Email Message Body" | mail -s "Subject of the Email" [email protected];[email protected],[email protected] -A <file to be attached>
To include a text file as the message body of the Email, instead of using echo for the same, you can redirect the text of a file to the command as shown below:
$ mail -s "Subject of the Email" [email protected] -A <file to be attached> < mailtext.txt
Conclusion
Today we have seen a way to send an Email from the Linux command line along with an attachment. There are some other programs like ‘mutt‘ and ‘Sendmail‘ which are similar to ‘mail‘ and can be used for the same purpose.
Thanks for reading and let us know your thoughts or questions in the comments below!
echo "Email Message Body" | mail -s "Subject of the Email" [email protected];[email protected],[email protected] -A
It will send both (Body and file to be attached) as attached files! But I don’t want to get the Body attached as a file, only the file to be attached!
Is this possible?
Kind regards
Frank