在 Linux 系统下测试 mail 命令。
Table of Contents
1. 最简单的例子
mail -s test yangfang@fudan.edu.cn
这条命令会发送一封标题为 test、正文为空的邮件到后面的邮箱。如果系统已经配置好 MTA(Mail Transfer Agent,例如 Postfix、Sendmail、Exim 等),并且目标邮箱不会拦截这种看起来有点莫名其妙的邮件,就能收到这封信。
如果不想被这类测试邮件干扰,建议把收件人换成本机账户,例如:
mail -s test localuser
其中 localuser 是本机已有的用户名。
2. 三种常用发信格式
直接在当前 shell 中输入正文
mail -s test yangfang@fudan.edu.cn
执行后可以把当前 shell 当成简单编辑器来用,输入正文,写完后按 Ctrl-D 结束输入并发送。
通过管道发送正文
echo "mail content" | mail -s test yangfang@fudan.edu.cn
这是我用得最多的一种方式,可能是因为喜欢管道的缘故。
以文件内容作为邮件正文
mail -s test yangfang@fudan.edu.cn < file
这会把 file 的内容作为邮件正文发送出去。
其实很容易发现,mail 会从标准输入读取邮件内容并发信。我也主要想说明这一点。到此,第二个例子结束。
3. 发送带附件的邮件
如果系统里没有 uuencode 命令,可以先安装 sharutils。例如在使用 yum 的系统上:
yum install sharutils
uuencode 通常需要两个参数:第一个是要发送的文件,第二个是邮件中显示的文件名。它也可以和管道一起使用。
发送单个文件:
uuencode /home/yfang/a.gif a.gif | mail -s pictest yangfang@fudan.edu.cn
把目录打包压缩后再发送:
tar czf - /home/yfang/ | uuencode home.tgz | mail -s pictest yangfang@fudan.edu.cn
注意:不同发行版里的 mail 或 mailx 实现可能不完全一样。有些版本支持 -a 参数直接添加附件,例如 Slackware 下的 mail 好像有这个参数,我没有用过。实际使用前可以先查看本机帮助:
mail --help
man mail
转自:http://www.svn8.com/linux/accidence/20091016/10858.html
