Linux系统下mail命令

在 Linux 系统下测试 mail 命令。

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

注意:不同发行版里的 mailmailx 实现可能不完全一样。有些版本支持 -a 参数直接添加附件,例如 Slackware 下的 mail 好像有这个参数,我没有用过。实际使用前可以先查看本机帮助:

mail --help
man mail

转自:http://www.svn8.com/linux/accidence/20091016/10858.html

Leave a Reply