Overview
I’ve shown how to send authenticated gmail from the command line before. That uses msmtp which takes some configuration.
This document shows how to use mailx itself to send authenticated gmail.
tl;dr
echo "this is the message" | mailx -s "Subject line here" \ -S smtp-use-starttls -S ssl-verify=ignore -S smtp-auth=login \ -S smtp=smtp://smtp.gmail.com:587 -S from="bgstack15@gmail.com(B Stack)" \ -S smtp-auth-user="bgstack15@gmail.com" \ -S smtp-auth-password="${SMTPPASSWORD}" -S ssl-verify=ignore \ -S nss-config-dir=/etc/pki/nssdb/ destination@example.com
Explanation
You need a certificate chain somewhere. You could also try nss-config-dir=~/.mozilla/firefox/xxxxxxxx.default.
If you use the whole command in the tl;dr section, you don’t need any config file. Of course, be aware that any parameter passed on the command line is visible to any other program running, so passing in the password like seen above is risky.
You can redirect standard in from a file if you wish, of course, or from a here-document.
For a dedicated configuration, and better password security, consider adding in to your ~/.mailrc file:
set smtp-use-starttls set nss-config-dir=/etc/pki/nss/ set ssl-verify=ignore set smtp=smtp://smtp.gmail.com:587 set smtp-auth=login set smtp-auth-user=bgstack15@gmail.com set smtp-auth-password=QWERTYUIOP set from="bgstack15@gmail.com(B Stack)"
And then just use:
mailx -s "Subject line" destination@example.com