====== Send Email via Gmail SMTP Cmd Line ====== **General Information** Send an e-mail message from a bash script or command line program. **Checklist** * Distro(s): Debian/Ubuntu based ---- ===== 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: * Login to Gmail * Click your Account Icon (top right), then Account * Click on the Security tab on the top * In the "Sign-in" box, accross from App Passwords, click on Settings. * Select a custom name and type something to describe msmtp so you won't forget what it is for. * Click Generate * Copy and paste the password from the pop up box into the config file above as "your_gmail_password" 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