搭建mutt+msmtp发信服务
各种命令行发信
mail/mailx 都试过,相对来说mailx比较方便点,发送带附件带邮件也很方便,例如:
mailx -s "The Subject" -a github.png [email protected] < body.txt
比较头疼带是mailx其实有很多个版本,各个表现不一致,参见
https://stackoverflow.com/questions/17359/how-do-i-send-a-file-as-an-email-attachment-using-linux-command-line/48588035#48588035
我在测试带服务器是CentOS 6.x,各种尝试后无法实现发送html格式的邮件内容,只好放弃,转向mutt
Mutt只是个客户端
首次运行mutt的时候马上会报错。。。
Error sending message, child exited 127 (Exec error.).
又翻阅了各种资料,mutt只是个客户端,方便你收发邮件,需要先配置真实的发信服务,例如sendmail/msmtp等
vi /etc/Muttrc.local
set sendmail="/usr/bin/msmtp"
这里有个插曲,网上大多数教程是教你是设置为 /usr/sbin/sendmail,奈何CentOS下面即使安装了sendmail,也没有sendmail这个命令,查阅了n多资料,里面也是一个很复杂的故事,所以走向另外一条路
yum install msmtp
我们尽量用yum能安装的工具
配置
vi /etc/msmtprc
account [email protected]
host smtp.exmail.qq.com
from [email protected]
auth login
user [email protected]
password 密码
account default: [email protected]
总算遇到一个简单的配置,配置完毕之后就能使用mutt发信了。
mutt -e "set content_type=text/html" -s "html test" -a file.zip -- [email protected] < body.html
One more thing
如果你是用阿里云,默认是禁止25端口出的,要么用其他端口,要么后台申请一下解封
未解决难题
虽然mutt能发信,能发html格式的信,能发html格式带附件带信,但是怎么可以将附件里面图片插入邮件主体里面,我一直没找到办法,虽然网上说mutt1.5.23版本会自动加cid,我测试了没有成功。如果你知道怎么弄,请告诉我。
https://stackoverflow.com/a/32227037/2809902
2天后我还是用了mailsend 替代上述服务
https://github.com/muquit/mailsend
git clone https://github.com/muquit/mailsend.git mailsend
cd mailsend
yum install -y openssl-devel
./configure --with-openssl=/usr/
make && make install
因为可以内嵌图片
-from [email protected]
-to [email protected]
-smtp smtp.mail.com
-port 25
-auth
-user [email protected]
-pass senderPassword
-content
-type "multipart/related"
-mime
-type text/html
-content
-type "multipart/related"
-mime
-type text/html
-disposition inline
-enc
-type "none"
-attach "body.mailsend.html"
-mime
-type image/png
-enc
-type "base64"
-disposition inline
-content
-id "imgs_d1"
-cs "none"
-attach "d1.png"
-content
-id "imgs_d2"
-cs "none"
-attach "d2.png"
-content
-id "imgs_d3"
-cs "none"
-attach "d3.png"