Linux下使用mail、mutt发送邮件

来源:互联网 发布:软件开发规划 编辑:程序博客网 时间:2024/05/16 14:19

       在运行一些定时任务的时候,时常需要查看定时任务的运行情况。任务少的时候还可以每天登陆看看执行结果,但是任务多了以后就不现实了。所以要有一种定时检查执行情况并将结果反馈的机制。最常见的反馈方式就是邮件了。

       在linux下有很多发送邮件的工具。我使用到的有mail和mutt。这里只是用它们来定时发送邮件,所以没有什么高级的功能。有的只是常规的发送邮件,指定发送人以及发送附件等。网上有很多的文章提到了mail和mutt的使用,我这里就不重复了,收集了一些链接给大家奉上。看了这些个文章,就基本了解个大概用法了。

Linux下使用mail命令发送邮件,  

Linux下使用mutt和msmtp命令行发送邮件, 

ubuntu下使用mutt+msmtp发送邮件(转)

我在这里写文章,并不是简单的转一下,肯定是在使用的过程中遇到了问题。我的主要问题是该怎么发送附件。在上面的文章中都提到了这个问题,刚开始想用mail命令来发送邮件。根据找到的资料应该是要使用 uuencode和mail一起来发送附件。

uuencode test.txttest| mail-s"hello,see the attachement" xxx@yyy.cc<mail.txt

但是,这样得到附件是经过编码的,一般是 begin 644(这个是你附件的权限) 文件名开头,然后就是一些适合email传输但是人看不懂的内容。需要对收到的内容进行解码才行。将收到的内容复制到文件中,执行uuencode命令就可以了。这样虽然达到了传送附件的效果,但是很不方便。如果接受方没有uuencode就悲剧了。

既然这个不怎么行,那就只能换一个了。使用mutt。在介绍mutt的使用的时候,一般的格式都是这样子的:

mutt -s "Subject"  -a  附件  xxx@yyy.com < mail.txt

但是,当我这样运行的时候,他提示我说是 unable to attach file. 这个就比较郁闷了。查了N多资料以后,发现很可能是版本的问题。有人说道,根据mutt版本的不同,对-a参数的要求不同。

情况一:-a 要是收件人地址之前的最后一个参数,并且用 -- 把 -a 参数和收件地址分开;

情况二:把 -a 参数放到最后。

所以把上面的命令修改成如下的形式就可以发送文件了:

mutt -s "Subject" -a 附件 -- xxx@yyy.com < mail.txt

mutt -s "Subject" xxx@yyy.com -a 附件 < mail.txt