电子邮件的笔记

注意

我一直不觉 gnus 比 outlook 好用。我也没有使用 gnus

发送邮件

send-mail-function 变量指定用哪一个函数发送邮件,默认的是 sendmail-send-it

sendmail-send-it 是一个 sendmail 中的一个函数。他会把当前的 buffer 作为一个电 子邮件发送出去。使用的外部程序是 sendmail-program, UNIX 下,这个值是 ``/usr/sbin/sendmail'' . Windows 下的是``fakemail''

发送邮件的人就是 user-mail-address , 全名是 user-full-name ,这两个变量也会被 其他模块引用,例如 <nop>ChangeLog</nop> 等等。

在使用 gnus 的时候 , send-mail-function 应该是` 'smtpmail-send-it''

(setq send-mail-function 'smtpmail-send-it)

关于 message-send-mail-with-sendmail , 可选的值有, Valid values include `message-send-mail-with-sendmail' (the default), `message-send-mail-with-mh', `message-send-mail-with-qmail', `smtpmail-send-it' and `feedmail-send-it'. 但是 不清楚和 send-mail-function 有什么区别和联系。

gnus 的使用经历

下面我打算试一试 gnus , 这个有名的怪物。 当我使用 emacs 之前,我也对 emacs 敬而 远之,因为他是一个怪物。但是使用了一段时间后,发现真的像很多人说的那样, emacs 还是很好用的。鼓吹 emacs 的人都是一些 hacker ,没有人会因此而受益,因此不像一些 商业产品那样,铺天盖地的广告,无数人狂热追捧,结果是某些公司笑了。

gnus 也是给我的感觉也是一样。 由于公司的环境限制,我只能使用 MS Exchange Server 和 MS Outlook 。 我发现他们之间是 IMAP 协议。 GNUS 是可以支持的。

首先, 我在 ~/.guns 中

(setq gnus-secondary-select-methods
           '((nnimap "my.ms.exchange.server") ; no special configuration
             ))

然后 M-x gnus ,他提示我输入用户名称和密码,然后就是一片空白。进入一个 Group buffer 。 不愧是怪物,这里首先就是不太友好的界面。还好,我知道按 ^ 可以找到一些 东西, gnus-group-enter-server-mode 。果然,出现了我定义的服务器的名字。然后在那 个服务器的名字上面按回车,进入。 然后就是和 Outlook 中一样的目录定义。 他们都显 示了一个 K ,先不管什么意思,我记得 u 表示订阅一个目录。于是选择了我需要的几个目 录,按 u 。 这样他们就出现在刚刚开始的 Group buffer 中了。 然后就是回车,q ,上 下箭头,基本上的使用和 BBS 差不多。

入门总结, 在 ~/.gnus 中,你可以定义很多 message 服务器的来源,这个比较复杂,因 为他支持的东西实在太多。 运行 gnus 之后,进入 group buffer ,显示你感兴趣的东西。 刚开始的时候他是空的,需要进入 server buffer ,在其中选择一个你感兴趣的目录订阅。

这就是我最基本的使用。

保存密码

我的第一个任务就是,不让他总是提示我输入用户名和密码。登陆 google ,查到 http://my.gnus.org 是一个好地方。 打开 gnus faq ,很快找到了办法。

创建 ~/.authinfo , 写入

machine news.yourprovider.net login YourUserName password YourPassword
chmod 600 ~/.authinfo # 为了保密。

第一个任务顺利完成。

查看旧 message

下一个任务,我发现 gnus 不显示读过了的 message ,当我读完所有的, group buffer 又变成空白了,提示我,没有什么新 message 了。 如何察看已经读过邮件呢?

我发现这些入门级的问题在 FAQ 上都有。 group buffer 按 L , gnus-group-list-all-groups 就行了。我在 group buffer 中使用 C-h m ,然后查看关于 group mode 的帮助,看到了这样的函数,很容易想到他的作用。 在 group 上,C-u RET ,这样就可以显示已经读过的邮件了。我觉得,如果经常使用 gnus ,会觉得这样的默认配 置是很好的。有的时候,我们只关心未读信息。 这也符合``怪兽''的习惯,一般软件都是 把最基本的功能,最基本的操作作为默认设置,但是如果入门之后,会发现这样的设置实际 上不是非常高效。而``怪兽''软件的一些默认配置让你觉得入门很难,但是它的工作方式也 许正是你需要的。即使这样,你依旧不喜欢默认的方式,那么可以让他改变.

 (setq gnus-fetch-old-headers t)
可以读取旧邮件.

排序邮件

默认排序的方式是按照时间排序, 在 summary buffer 中 C-h m ,很容易找到

C-c C-s TAB     gnus-summary-sort-by-score
C-c C-s C-d     gnus-summary-sort-by-date
C-c C-s C-s     gnus-summary-sort-by-subject
C-c C-s C-a     gnus-summary-sort-by-author
C-c C-s C-c     gnus-summary-sort-by-chars
C-c C-s C-l     gnus-summary-sort-by-lines
C-c C-s C-n     gnus-summary-sort-by-number

标记重要邮件

在summary buffer 中的 一个 message 上按 u , 可以标记一个 message 是十分重要的, 每次进来都可以看到这个 message 。 <SPC> gnus-summary-put-mark-as-unread 是反操作。

过滤显示邮件

在 summary buffer 中,可以过滤 message . 这个功能很好用。

/ C             gnus-summary-limit-mark-excluded-as-read
/ c             gnus-summary-limit-exclude-childless-dormant
/ E             gnus-summary-limit-include-expunged
/ x             gnus-summary-limit-to-extra
/ t             gnus-summary-limit-to-age
/ d             gnus-summary-limit-exclude-dormant
/ T             gnus-summary-limit-include-thread
/ D             gnus-summary-limit-include-dormant
/ *             gnus-summary-limit-include-cached
/ v             gnus-summary-limit-to-score
/ M             gnus-summary-limit-exclude-marks
/ m             gnus-summary-limit-to-marks
/ u             gnus-summary-limit-to-unread
/ a             gnus-summary-limit-to-author
/ s             gnus-summary-limit-to-subject
/ w             gnus-summary-pop-limit 这个功能很好,退回到上一次过滤的结果。
/ n             gnus-summary-limit-to-articles
/ /             gnus-summary-limit-to-subject

查看邮件的原始编码

在 summary buffer 中, C-u g 可以查看邮件的原始编码,如果想对电子邮件技术有深入 了解,或者出现乱码,很容易知道问题的原因. 或者你想查看发信人的详细邮件地址,服 务器名称.或者你想查看某些应用程序增加的特殊的电子邮件标记. 

保存邮件到本地

未 mail 选择 backend

一个 server 一个文件.

 

nnmbox

mbox 格式, 行首以"From " 开头,表示一个邮件的开头.

nnbaby1

babyl 格式.

每一个 group 一个文件

nnfolder 采用 mbox 格式,不过每一个 group 一个文件.

每一个 message 一个文件.

nnmh 采用 MH 格式. group 是一个目录, message 是一个文件. 文件名称是数字.

nnml 和 nnmh 类似,但是提供了 .overview 文件在没有一个目录中, 这样提高了访问速 度.

总结

如果磁盘空间不是问题, nnml 是一个不错的选择.

 (add-to-list 'gnus-secondary-select-methods
      '(nnml ""
             (nnml-directory "~/GnusMail/")
             (nnml-active-file "~/GnusMail/active")))

读取邮件

一般使用 POP3 把邮件从服务器上读取到本地的 server(某种 backend) 上,

(setq mail-sources '((pop :server "frumple" :user "jrl" :password "secret")))

可以有多个邮件源,也就是多个邮件服务器.

发现 gnus 只在启动的时候 fetch mail. 如果想读取 mail 的话, 'M-g' or gnus-summary-rescan-group,

感受

gnus 现在觉得真的很难用,下面几个功能不知道怎么实现。

我在 Group Buffer 下 用 G c 创建了一个 nndir 的 Group ,可以不能进入这个 Group ,提示是 error stringp ,看来是一个程序内部错误。 G &#60;DEL&#62; 又说不能删除这个  Group, 一个软件一般都可以支持可逆操作,可以创建,就应该可以删除.

我自认为已经是一个 emacs 的用户了,已经可以忍受所有的功能都去寻找手册, setq , M-x , C-h m , C-h k ,这些基本使用方法了. 但是我依然不能找到解决我这些问题 的办法.