当前位置: 首页 > 工具软件 > Mutt > 使用案例 >

linux 发送邮件 mutt,Linux发送邮件:mutt中级技巧

曹季同
2023-12-01

http://hi.baidu.com/yunpengwu/blog/item/66922b2ee41247574fc22611.html 1. 查找过滤邮件 邮件客户端的一个非常重要的功能就是查找邮件,mutt 可以非常快速方便的查找邮件,并且对查找到的邮件进行批量处理,这也正是mutt 深深吸引我的地方。 用l来过滤邮

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 "

~s广告|~d>1m"'

------------------------------

用正则表达式匹配删除服务器上标题是“广告”和一个月之前的邮件。

$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:!mutt -i /tmp/mutt-mail-from-vim.tmp

就一切搞定!

=======

相关链接

Linux发送邮件:mutt中级技巧

Linux发送邮件客户端mutt入门

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

 类似资料: