Table of Contents

Send Email via Gmail SMTP Cmd Line

General Information

Send an e-mail message from a bash script or command line program.

Checklist


Install msmtp

This package will allow you to configure what gmail account to send from and will connect securely via TLS to the gmail SMTP servers.

sudo apt-get install msmtp-mta

Install Mailx

Install a simple mail transfer agent to actually prepare the e-mail message.

sudo apt-get install heirloom-mailx

Configure Gmail Account on MSMTP

1) Create a file in your home directory called “.msmtprc”

vim ~/.msmtprc

2) Paste the following into the config file, change the “your_address” x2 and “your_gmail_password” to refect your information:

#Gmail account
defaults
logfile ~/msmtp.log
 
account gmail
auth on
host smtp.gmail.com
from your_address@gmail.com
auth on
tls on
tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt
user your_address@gmail.com
password your_gmail_password
port 587
 
account default : gmail

Note: If you use two factor authentication for gmail, you will need to create an application specific password for this config file. To do that:

3) Secure the config file Since it contains credentials, ensure only you can read it:

chmod 600 .msmtprc

Configure Mailx

Setup mailx to use msmtp to send e-mail.

Create a .mailrc in your home folder:

vim ~/.mailrc

Paste the following in:

set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a gmail"

Send mail from the command line

Interactively

mail -s "Subject Here" address@destination.com

You will now be able to type in your message. When you want to send it, type ENTER to go to a blank line and then Ctrl+D to end/send.

Auto Messages

To send an e-mail from a script, you will need to pre-write your message.

Populate a text file, such as “message.txt” with the e-mail to be sent. Then, send it like this:

mail -s "My Awesome Message Subject" importantperson@cooldomain.com < message.txt