原文链接:http://www.cnblogs.com/zhousir1991/archive/2011/03/23/1992550.html
Linux下mail命令附件发送使用技巧
Posted on 2011-03-23 15:12 zhousir1991 阅读(105) 评论(0) 编辑 收藏这几天由于经常远程到一个Linux主机上处理东西,然后会生成一些文件,所以想把这些东西通过邮件附件的形式给自己发回来,于是好好研究了下Linux中的mail命令,其中参考了一些网友的经验:
1. 例如最简单的一个:
mail -s text zhousir1991@gmail.com
这条命令的结果是发一封标题为text的空信给后面的邮箱,但是往往这类邮件会被当成垃圾邮件来处理,所以如果没有收到邮件,建议打开垃圾箱来查看一下。
第一种方法,你可以把当前shell当成编辑器来用,编辑完内容后Ctrl-D结束
2. 第二个例子:
echo “This is a test mail!”|mail -s text zhousir1991@gmail.com#第二种方法,使用管道命令。
mail -s test zhousir1991@gmail.com < file
第三种方法,以file的内容为邮件内容发信,这个我个人现在用的比较多,因为在终端中写东西毕竟不是很方便,所以我还是会首先选择事先写好一个文档然后再mail过去。
3. 带附件的邮件发送(这是我想重点介绍的一个东西)
如果你的系统中没有uuencode命令的话,并且你已经配好了yum仓库;(yum仓库配置可以参看我的其他文档:http://www.cnblogs.com/zhousir1991/archive/2011/03/05/1971879.html)请先安装sharutils (yum install sharutils)
uuencode 需要两个参数,第一个是你要发送的文件,当然这个也可以用管道来做,第二个是显示的文件名
uuencode /home/zhousir/httpd.conf httpd.conf|mail -s mailtest zhousir1991@gmail.com
tar czf - /home/zhousir/ | uuencode home.tgz |mail -s mailtest zhousir1991@gmail.com
ps: slackware下的mail好像有一个-a参数,可以直接添加附件,我没有用过。
转自:http://www.svn8.com/linux/accidence/20091016/10858.html
Linux下Mail命令收集:
“/var/spool/mail/[linux用户名]”文件中。
在linux中输入mail,就进行了收件箱,并显示二十封邮件列表。
此时命令提示符为"&"
unread 标记为未读邮件
h|headers 显示当前的邮件列表
l|list 显示当前支持的命令列表
?|help 显示多个查看邮件列表的命令参数用法
d 删除当前邮件,指针并下移。 d 1-100 删除第1到100封邮件
f|from 只显示当前邮件的简易信息。 f num 显示某一个邮件的简易信息
f|from num 指针移动到某一封邮件
z 显示刚进行收件箱时的后面二十封邮件列表
more|p|page 阅读当前指针所在的邮件内容 阅读时,按空格键就是翻页,按回车键就是下移一行
t|type|more|p|page num 阅读某一封邮件
n|next|{什么都不填} 阅读当前指针所在的下一封邮件内容
阅读时,按空格键就是翻页,按回车键就是下移一行
v|visual 当前邮件进入纯文本编辑模式
n|next|{什么都不填} num 阅读某一封邮件
top 显示当前指针所在的邮件的邮件头
file|folder 显示系统邮件所在的文件,以及邮件总数等信息
x 退出mail命令平台,并不保存之前的操作,比如删除邮件
q 退出mail命令平台,保存之前的操作,比如删除已用d删除的邮件,已阅读邮件会转存到当前用户家目录下的mbox文件中。如果在mbox中删除文件才会彻底删除。
在linux文本命令平台输入 mail -f mbox,就可以看到当前目录下的mbox中的邮件了。
cd 改变当前所在文件夹的位置
写信时,连按两次Ctrl+C键则中断工作,不送此信件。
读信时,按一次Ctrl+C,退出阅读状态。
另外一种方法:
在Linux命令行下发送html格式的邮件
[日期:2011-01-09] | 来源:Linux社区 作者:radarruan |
编码方式如果用utf8,显示出的中文为乱码,所以建议用gb2312,这样就没有乱码啦! 发送脚本范本如下#!/bin/bash
#send a mail to all
#TIME=`date '+%H:%M:%S'`
for MAIL in `cat /home/service/mailscript/people`
do
TIME=`date '+%H:%M:%S'`
cat /home/service/mailscript/active_account.vm|formail -I "From: service" -I "To:$MAIL" -I "MIME-Version:1.0" -I "Content-type:text/html;charset=gb2312" -I "Subject:祝贺你"|/usr/sbin/sendmail -oi $MAIL
echo "$TIME--$MAIL sent ok!" >> /home/service/mailscript/mailtest.log
sleep 10
done
执行上面的脚本的时候注意要使用邮件系统的service系统用户来执行这个脚本。
参考:
今天终于搞定了如何在命令行的情况下发送带图片的邮件。其实思路很简单的,只是以前没有注意到。如何实现呢?就是利用formail+sendmail啦!
formail接受html格式的文件作为邮件内容,这样就可以解决发送带图片邮件的问题啦,因为html中可以插入图片,只要给出的img src为可用的链接就行了。嗯嗯经过测试能够实现既定功能。
cat mailfile.html | formail -I "MIME-Version:1.0" -I "Content-type:text/html;charset=gb2312" -I "Subject:layer4 config monitor" | /usr/sbin/sendmail -oi ×××@×××.com
不行你用上面的命令来试试,觉得好用。不过还有一点就是编码问题,我用的foxmail,如果用utf8,显示出的中文为乱码,所以建议用gb2312,这样就没有乱码啦!
第三种方法:
就是ant的mail任务