现在的位置: 首页 > 综合 > 正文

Linux发送邮件:mutt中级技巧

2018年01月26日 ⁄ 综合 ⁄ 共 3100字 ⁄ 字号 评论关闭

转载:http://hi.baidu.com/yunpengwu/blog/item/66922b2ee41247574fc22611.html

1. 查找过滤邮件

邮件客户端的一个非常重要的功能就是查找邮件,mutt 可以非常快速方便的查找邮件,并且对查找到的邮件进行批量处理,这也正是mutt 深深吸引我的地方。

用l来过滤邮件,可以采用mutt自定义的patterns
常用的patterns:
~c EXPR         cc给EXPR
~f EXPR         from来自EXPR
~t EXPR         to给EXPR
~s EXPR         subject是EXPR
~C EXPR         to或者cc给EXPR
~d [min]-[max] 发送日期在这个时间段内

例子:
绝对时间:
~d 15/1/08-18/1/08                      在08年1月15日至18日之间
~d 15-                                  在当月15日之后
~d -25                                  在当月25日之前
~d 15*2d                                在当月15日前后各两天
~d 15-2w                                在当月15日之前两周
~d 15/2+1m                              在当年2月15日之后1月
~d 15-1y                                在当月15日之前1年
相对时间:
~d <1d                                  一天内的邮件
~d >1w                                  一周前的邮件
~d <2m                                  两个月内的邮件
~d <1y                                  一年内的邮件
两个patterns自动与操作,可以用|来或操作,用!来否操作。

2.中文乱码的问题


这个问题目前也没有完全搞定,比如说qq邮箱收来的邮件还有不少乱码。好在我不用qq邮箱,一般的邮件乱码问题都已经解决。
首先是终端的编码为utf-8,配置文件中需要有:
set charset="utf-8"

解决收到的邮件中文附件名为乱码的问题
set rfc2047_parameters=yes

发出中文附件是乱码问题,需要打patch解决,整过一次没整好。

附件是us-ascii的格式附件的显示乱码问题
charset-hook ^us-ascii$ utf-8

gmail发来的html邮件乱码问题,这个问题比较麻烦。
确保muttrc中有
auto_view text/html
然后加一个文件~/.mailcap 内容如下:
text/html ; w3m -T text/html -I %{charset} -dump %s ; nametemplate=%s.html ; needsterminal; copiousoutput
可以对比上句和/etc/mailcap中对应那句的区别,增加了个编码的配置就搞定了。

3. 兄弟,发个文档过来!


一般给别人发送个文档是怎么操作?打开邮件客户端,写好收件人,在层层目录结构中寻找文档,添加附件,发送。——太过麻烦!
在资源管理器里面选定多个文档鼠标右键发送可以不?写个小脚本就搞定!

脚本~/bin/mutt.sh
------------------------------
#!/bin/bash
# 用mutt来发送多个附件
MAIL="mutt "
while [ ! -z $1 ]
do
    MAIL=$MAIL"-a $1 "
    shift
done
gnome-terminal -e "$MAIL"
------------------------------
同时做一个软连接:
$ln -s ~/bin/mutt.sh ~/.gnome2/nautilus-scripts/mutt.sh

然后在nautilus里面选择多个文件,右键->Scripts->mutt.sh即可弹出一个终端窗口让你输入收件人,开始发送。

由于没有解决发送中文附件乱码问题,想了另外的方法来解决。主要是发给用windows的编码是GBK的同事们。
脚本~/bin/mutt-zh.sh
------------------------------
#!/bin/bash
# 用mutt来发送中文文件
TIME=`date +%H%M%S`
rm -rf /tmp/doc.zip
rm -fr /tmp/$TIME
mkdir -p /tmp/$TIME
while [ ! -z $1 ]
do
    cp $1 /tmp/$TIME/$1
    convmv -t GBK -f UTF-8 --notest -r /tmp/$TIME
    shift
done
cd /tmp/$TIME
zip /tmp/doc.zip -r *
EXE="mutt -a /tmp/doc.zip "
gnome-terminal -e "$EXE"
------------------------------

4. 定时删除服务器上指定邮件


好一点的邮件服务器都有这种功能,每次收取邮件的时候保存邮件在服务器上,同时删除掉指定时间之前的邮件。
借用crontab和一个简单的脚本就可以实现删除服务器上几乎任意条件的邮件!

脚本~/bin/deletemail.sh
------------------------------
#!/bin/bash
mutt -f pop://user:passwd@mailserver -e 'push "<delete-pattern>
~s广告|~d>1m<enter><quit><enter><enter>"'
------------------------------
用正则表达式匹配删除服务器上标题是“广告”和一个月之前的邮件。

$crontab -u aaron -e
输入:
30 13 * * * /home/aaron/bin/deletemail.sh
制定计划每天中午1:30,脚本自动到服务器上删除这种类型的邮件。

5. 定时备份文件

能定时删除服务器上的邮件,自然可以定时将自己的重要笔记打包作为附件发送到指定邮箱。

脚本~/bin/backup.sh
------------------------------
#!/bin/bash

EMAIL="user@mailserver"
MESSAGE="备份资料"
DATE=`date "+%F %T"`

NOTES=/tmp/notes-`date +%y%m%d%H%M%S`.tar.bz2
cd ~; tar jcvf $NOTES notes
echo $MESSAGE | mutt $EMAIL -s "backup $DATE" -a $NOTES
------------------------------
同样用crontab 定时执行这个脚本即可。

6. 发送所编辑文件的部份文本内容


如果是用VIM 作为文本编辑器,将所编辑文件的一部分作为正文发送邮件是件很容易的事情,只需要在vimrc 中增加如下:
vmap ,ml :w! /tmp/mutt-mail-from-vim.tmp<cr>:!mutt -i /tmp/mutt-mail-from-vim.tmp<cr>

就一切搞定!

 

 

=======

相关链接

Linux发送邮件:mutt中级技巧


Linux发送邮件客户端mutt入门

Linux下发送邮件命令:mutt 和 mail 以及 脚本

抱歉!评论已关闭.