最近在 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
表示从标准输入中读取邮件头信息(邮件主题、发件人地址、收件人地址)和邮件正文内容。