How to send email on linux terminal

You may want to send email using linux terminal. 

The easiest way is to use mail tool.

for example, you can use the following command to send an email easily. 

echo “content the email” | mail -s “subject of this email” [email protected]

You can also use -a option to attach a file:

echo “content the email” | mail -s “subject of this email” -a ~/filename  [email protected] 

However, you may want to specify the sender’s email address. Then a good tool is sendEmail.

About SendEmail
SendEmail is a lightweight, command line SMTP email client. If you have the need to send email from a command line, this free program is perfect: simple to use and feature rich. It was designed to be used in bash scripts, batch files, Perl programs and web sites, but is quite adaptable and will likely meet your requirements. SendEmail is written in Perl and is unique in that it requires NO MODULES. It has an intuitive and flexible set of command-line options, making it very easy to learn and use.

It doesn’t require you have sudo permission to install it.  You only need to download the file from here,

and unzip it, then you can send email easily.

For example, using the following three commands, you can use sendEmail immediately. 


tar -xvf sendEmail-v1.56.tar.gz

cd sendEmail-v1.56

Then you can use the following command to send email by specifying both the sender and receiver email address.

./sendEmail -f [email protected] -t [email protected] -u ” email subject ” -a ~/some_file_name -m ‘the content of the email’

Here are some other options of sendEmail.

-f ADDRESS from (sender) email address
* At least one recipient required via -t, -cc, or -bcc
* Message body required via -m, STDIN, or -o message-file=FILE

-t ADDRESS [ADDR …] to email address(es)
-u SUBJECT message subject
-m MESSAGE message body
-s SERVER[:PORT] smtp mail relay, default is localhost:25

-a FILE [FILE …] file attachment(s)
-cc ADDRESS [ADDR …] cc email address(es)
-bcc ADDRESS [ADDR …] bcc email address(es)
-xu USERNAME username for SMTP authentication
-xp PASSWORD password for SMTP authentication

-b BINDADDR[:PORT] local host bind address
-l LOGFILE log to the specified file
-v verbosity, use multiple times for greater effect
-q be quiet (i.e. no STDOUT output)
-o NAME=VALUE advanced options, for details try: –help misc
-o message-content-type=<auto|text|html>
-o message-file=FILE -o message-format=raw
-o message-header=HEADER -o message-charset=CHARSET
-o reply-to=ADDRESS -o timeout=SECONDS
-o username=USERNAME -o password=PASSWORD
-o tls=<auto|yes|no> -o fqdn=FQDN

–help the helpful overview you’re reading now
–help addressing explain addressing and related options
–help message explain message body input and related options
–help networking explain -s, -b, etc
–help output explain logging and other output options
–help misc explain -o options, TLS, SMTP auth, and more