mutt中级技巧
2009-02-11 23:58
之前写过“邮件客户端mutt从入门到。。。”。入门之后没有领略到软件之精华,之后转入opera M2门下一年有余。前段时间终于重回mutt的怀抱,终于体验到那句经典的话:“all mail clients suck, this one just sucks less.”
这里列举一些技巧,对应之前的入门,这里称之为“中级”,让高手们见笑了。 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> 就一切搞定! |
|