最近在 linux上折腾使用脚本发送邮件的功能,遇到了很多坑,现在简单记录一下。
经尝试发现,不同邮箱服务器的安全限制不同,有些能接受来自非真实邮箱地址的邮件,有些则不能。
若想确保对方一定能接收到邮件,最好还是用真实的邮箱地址进行发送,因此这里使用外部 smtp服务发送邮件。
我一共尝试了两种方法,分别是 sendEmail和 mailx,皆能成功发送邮件。下面分别展示它们的使用方法。
1. sendEmail
对于 sendEmail可使用如下命令发送邮件:
$ sendEmail \
-f user@domain.cn \
-s smtp.domain.cn \
-o message-charset=utf-8 \
-xu user@domain.cn \
-xp 'xxxxxx' \
-t person@xxx.cn \
-u "mail subject" \
-m "mail content"
参数简单明了,-f指定发件人的邮箱地址,-s指定外部 smtp服务器的地址,-xu和 -xp分别是登录外部 smtp服务器的用户名和密码,-t指定收件人的邮箱地址,-u指定邮件主题,-m指定邮件正文。
2. mailx
对于 mailx可使用如下命令发送邮件:
$ env MAILRC=/dev/null \
from=user@domain.cn \
smtp=smtp.domain.cn \
smtp-auth-user=user@domain.cn \
smtp-auth-password='xxxxxx' \
smtp-auth=login \
mailx -n -t < content_file
content_file文件内容如下所示:
Subject: Hello
From: user@domain.cn
To: person@xxx.cn
Nice to meet you.
Regards.
参数更加简单明了,不用作过多解释,指定 -n表示不读取 /etc/mail.rc配置文件里的内容,-t表示从标准输入中读取邮件头信息(邮件主题、发件人地址、收件人地址)和邮件正文内容。

博主折腾脚本发送邮件功能时遇诸多问题,发现不同邮箱服务器安全限制不同,为确保对方接收邮件,使用外部 SMTP 服务。尝试了 sendEmail 和 mailx 两种方法,均能成功发件,并分别展示了它们的使用命令及参数。
9186

被折叠的 条评论
为什么被折叠?



