绑定Emacs和mutt,以IMAP方式访问Gmail
Written by simon on September 6, 2008 – 5:25 pm本文的目的:在Emacs下利用Mutt,以IMAP方式完成Gmail邮箱的绑定。
简单的介绍一下情况:作为一个超级伪Emacs狂热者,我希望打开计算机的一切活动都在Emacs下完成,当然也包括收发Email了。今天的笔记主要涉及到在Emacs-unicode-2下使用mutt,以IMAP的方式完成gmail邮件的相关操作。不用pop3的原因是,imap要比pop3的方式更好更强大。
(为什么不用GUI格式的程序,比如evolution或者thunderbird?evolution我没使用过,基本上此前一直是在用thunderbird的,在debian下它被起名为icedove──关于debian下将firefox thunderbird等mozilla program的程序改名的比较详细的介绍,请参阅wikipedia的Mozilla Software Rebranding辞条──Icedove第一个问题是速度比较慢,配置中文字体和不同的字符编码又比较麻烦,更让人不爽的是,它的imap功能很慢,经常是点选了一封邮件之后程序就会处于较长时间的假死状态,不知道到底是在读取gmail服务器的数据呢,还是什么都没有干。时间长了就颇有些不爽。第三,我需要经常更换计算机,在教研室使用一台,在宿舍使用另一台,而至少从我目前的观点来看,thunderbird程序的配置文件很不方便迁移,要是可以像mutt这样仅仅将一个~/.mutt带走拷贝到别的机器上就能使用,就会方便得多)。
主要分为以下几个步骤来进行。
注1,本文是基于Debian/Ubuntu操作系统的,如果使用其他操作系统,请作出相应的调整。
注2,这只是初步的准备工作,目的仅仅是让mutt跑起来,将mutt和emacs整合起来。更多功能还是要各位自己看文档自己总结和试验,比如邮件分类,等等。
1.前期准备工作:在emacs中配置emacsclient
Mutt是个字符终端的邮件处理程序,如果我们希望用emacs作为处理信件内容的文本编辑器,需要在emacs中设置emacsclient。它的基本工作机理是:将emacs程序设置为emacs server,这样比如mutt等程序在emacsclient模式中需要调用emacs时,以client身份向作为server的emacs发送请求,emacs接受这个client请求,并做出相应处理。
说起来似乎很复杂,做起来一行代码就可以了。在~/.emacs文件中加入
(server-start)
这一行,保存,退出,重新启动emacs即可。另一个解决方案是可以在emacs中运行M-x start,在每次需要进入emacs server模式的时候运行一遍该命令。
2.mutt的安装和配置
没有mutt?安装一下就可以了
sudo apt-get install mutt
mutt文件主要放置在根目录下的.mutt中。可以自己创建之,并进入该目录下。
mkdir ~/.mutt/
cd ~/.mutt
然后就是~/.mutt/muttrc文件的配置工作了,主要是围绕imap模式访问gmail邮箱而展开。
emacs ~/.mutt/muttrc
加入如下代码:
## ~/.mutt/muttrc
set from=yourusername@gmail.com
# 你在gmail.com的邮箱地址
set realname="Simon"
# 比如,王小二
set reverse_name=yes
set reverse_realname=no
set imap_user = 'yourusername@gmail.com'
#gmail邮箱的IMAP用户名嗯
set spoolfile = imaps://imap.gmail.com:993/INBOX
#set sendmail="/usr/sbin/ssmtp -C$HOME/.mutt/ssmtp.conf"
set smtp_url="smtp://yourusername@smtp.gmail.com:587/"
#也是要把yourusername替换成相应的你的用户名
set folder = "imaps://imap.gmail.com:993"
#set record=+sent-mail-`date +%Y`
set record="+[Gmail]/Sent Mail"
set postponed="+[Gmail]/Drafts"
# previously do: mkdir -p ~/.mutt/cache/{headers,bodies}
set header_cache="~/.mutt/cache/headers"
set message_cachedir="~/.mutt/cache/bodies"
set certificate_file=~/.mutt/certificates
set move=no
set delete=yes
set edit_hdrs
set include
set reply_to
set abort_nosubject=no
alternates '(username|altusername)([-+].*)?@.*'
set hdr_format="%4C %Z %{%m/%d} %-15.15F (%4c) %s" # format of the index
hdr_order From: Date: User-Agent: X-Mailer To: Cc: Reply-To: Subject:
ignore *
unignore From: Date: User-Agent: X-Mailer To: Cc: Reply-To: Subject:
my_hdr Reply-To:
# setup gmail filters to apply the corresp. labels:
mailboxes ! =ml-lug-list =ml-lug-org =[Gmail]/Drafts "=[Gmail]/All Mail"
set editor="emacsclient %s"
#在这行设置mutt使用的文本编辑器。我是使用的emacs,所以利用emacsclient来调用emacs,当然,也可以切换成别的:)
set alias_file=~/.mutt/mail_aliases
source ~/.mutt/mail_aliases
send-hook . 'set realname="Yanyuan Zhu"'
#换成相应的名字
## hack to make $reverse_name and 'my_hdr From:' work ok (eg mlists)
send-hook . 'set from=yourusername@gmail.com'
send-hook . 'unmy_hdr From:'
###
send-hook . 'set signature=~/Documents/.email_end'
#这行是email末尾的签名。在你的根目录某个位置下创建一个,并将地址填在上栏即可。或者如果你不需要这个签名,将该行用#注释掉。
以及,在.mutt目录下创建这个文件,是muttrc中需要的。留空即可,因为我暂时还没搞懂它是干什么用的:)
touch ~/.mutt/mail_aliases
3.mutt试验
在一个已经调配好了中文字体支持的字符终端下(比如urxvt, gnome-terminal),输入mutt,回车
mutt会提示输入密码,按照要求照做,imap读取了邮件列表之后,就进入mutt的页面了。
本文假定您已经掌握了基本的mutt操作,如果没有,请阅读mutt文档。
是时候检测mutt和emacs的绑定是否成功了。首先确定两点:
1.Emacs和mutt均打开。
2.Emacs的server mode打开。
在mutt窗口下按m,写封信吧。输入对方的邮箱地址(To:),邮件标题(Subject:),回车。看看如果配置正确的话,emacs会出现反应,同时mutt程序窗口里会出现如下字样:
simon@simon:~/.mutt$ mutt
Waiting for Emacs...
Waiting for Emacs...
表示此时mutt在等待文本编辑器Emacs结束工作。
回到Emacs窗口中来,输入邮件正文后,怎么将Emacs中的文件传递回mutt中去呢?
两个方法,第一个很愚蠢,C-x C-c关闭emacs即可(不幸的是,这是我开始一直使用的方法...);第二个是用C-x #来将该buffer传递回给mutt。
现在再回到mutt窗口中,可以看到Attachments部分中有这个文件了。如果还要继续添加其他的附件,比如图片等,还可以用a命令进行后续操作。否则的话,按y发送即可──还需要输入smtp的用户名密码。
补充:mutt以emacsclient方式传递请求给文本编辑器emacs,emacs打开一个新的buffer后,会将该buffer保存在/tmp目录下。可以在/tmp中寻找相应标题的“草稿”来恢复该文档,在没有重新启动的前提下──重启后/tmp中的文件将被删除。
Posted under linux |
Leave a Comment
You must be logged in to post a comment.
RSS订阅本站