讨论如何在ubuntu上,使用sendemail连接远程smtp服务器发送邮件。
在如何在Ubuntu 16.04上安装配置邮件发送服务器一文中,我尝试了配置ubuntu作为电子邮件发送服务器。在使用中,发现这种发送方式很不稳定,我推测应该是发送服务器域名解析的问题。
可能的原因是,邮件发送至目标邮件服务器后,目标服务器判断发件人邮件地址与实际源邮件服务器ip地址不匹配,所以丢弃了。今天我在ubuntu上试用sendemail在终端发送邮件,非常方便好用。
前提
你应该有一个邮箱地址,这个邮箱可以使用smtp端口发信。因为在终端发邮件时的命令行中,要显式输入登陆smtp服务器的用户名和密码,安全性存在一定问题,所以建议你申请一个免费邮件系统。我使用的yahoo的邮件。
安装
1 | apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail |
使用
使用方法:1
sendemail -f ADDRESS [options]
参数详解:1
2
3
4
5
6
7
8
9
10
11-f ADDRESS # 发件人地址,注意此地址应该是你真实地址
-t ADDRESS # 收件人地址
-u SUBJECT # 主题
-m MESSAGE # 邮件正文
-s SERVER[:PORT] # SMTP服务器地址及端口
-a FILE [FILE ...] # 附件
-cc ADDRESS [ADDR ...] # 抄送地址
-bcc ADDRESS [ADDR ...] # 暗抄送地址
-xu USERNAME # SMTP服务器用户名
-xp PASSWORD # SMTP服务器密码
-o # 其它选项
示例
如我使用yahoo邮箱作为邮件发送服务器,要把sendemail命令的使用方法作为附件发到我的信箱中:1
2man sendemail > sendemail.usage.txt
sendemail -f zhaohufan@yahoo.com.hk -t fanzhh@gmail.com -u "sendemail使用说明" -m "sendemail使用说明详解。" -s smtp.mail.yahoo.com -o tls=yes -xu zhaohufan@yahoo.com.hk -xp 密码 -a sendemail.usage.txt
注意:-o tls=yes
选项意为服务器需要SSL验证。