首页 > Email, 中级 > 用Mew收发邮件

用Mew收发邮件

简介

unix 世界的邮件客户端很丰富,有跨平台的 thunderbirdevolution,无穷定制性的 muttemacs 上的邮件客户端有强大的 gnus,作为新闻组阅读器实在舒适。

unix 的哲学思想为 “do one thing better”,因此在 unix 的世界中,邮件程序依据功能可以细分为 MUA(如典型的 mutt),MTA(fetchmail) 和 MDA(procmail)。mutt 和 gnus 这些定制性强的邮件客户端也很依赖这些强大的工具,功能的实现也依赖于这些工具的搭配,曾经自己也有几番尝试 mutt 的经历,但都失败了。

几番搜索比较后,选择了 mew 作为邮件客户端,一如所有的 emacs 的插件,强大和无穷的定制性。

  • 可以自给自足,不依赖于 MTA 和 MDA,因此 mutt 的跨平台要好的多,可以在 windows 上使用。
  • 强大的过滤器定制,在 mew 中称为 refile。而且 mew 自动 refile 还是比较准确和人性化的。
  • mew 为来自日本的作品。因此相比 gnus 对 cjk 的支持要完善。
  • mew 内建的丰富模式,一共六种,有 summary, virtual meaaage, draft, header, edit, addrbook mode。
  • mew 的配色相比 gnus 实在是非常的舒服,也是最初吸引自己的原因。
  • mew 内建的无处不在的强大的补全机制,使得撰写处理阅读邮件很便捷。

安装

mew 的安装在 linux 下很简单,如果是 gentoo 的话,可以直接通过命令 “emerge app-emacs/mew” 安装。如果是想要手动管理各个 elisp 拓展,那可以通过 autotools 进行安装,更推荐前者。mew 在 windows 上的安装可以参考 mew 目录下的 “00readme.w32″ 文件。

mew 在 windows 的安装上比较折腾,不得不说, emacs 在 windows 上使用相较于 unix 要辛苦的多。mew 对于邮件附件的处理依赖于 unix 的各个组件,windows 上的 mew 基本是无对附件的处理能力。如果需要 mew 的 ssl 加密连接功能,必须要安装 stunnel3 版本,stunnel4 的版本总是会处于无法相应的状态。

(if (string-equal system-type "windows-nt")
    ;; Note,in windows,you must use replace stunnel4 with stunnel3 version.
    (setq mew-prog-ssl  "C:/Program Files/stunnel/stunnel.exe")
  (setq mew-prog-ssl "/usr/bin/stunnel"))

配置

mew 的 初始化必要代码建议写入 ~/.emacs 文件中,而 mew 单独的配置建议保存在 ~/.mew.el 文件中,mew 在启动时会读取此文件中的配置内容。

初始化配置

安装完之后还需要在 ~/.emacs 文件中加入如下必要代码以告诉 emacs 如何启动 mew。

(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)
 
;; Optional setup (Read Mail menu for Emacs 21):
(if (boundp 'read-mail-command)
    (setq read-mail-command 'mew))
 
;; Optional setup (e.g. C-xm for sending a message):
(autoload 'mew-user-agent-compose "mew" nil t)
(if (boundp 'mail-user-agent)
    (setq mail-user-agent 'mew-user-agent))
(if (fboundp 'define-mail-user-agent)
    (define-mail-user-agent
      'mew-user-agent
      'mew-user-agent-compose
      'mew-draft-send-message
      'mew-draft-kill
      'mew-send-hook))

帐号设置

对于邮件服务的设置,在 mew 中即被映射为对 mailbox 的设置,mew 中对于邮件的组织是通过 mailbox 完成的。相应的有 3 种类型的 mailbox,分别表示着 local/pop/imap/nntp/,即不同的邮件箱对应着不同的邮件协议,通过变量 proto 进行设置。

包含邮件的 mailbox 在 mew 中被称为 folder,而 folder 的名称由两部分组成:proto + string。proto 相应的有三种类型,分别以 +/$/%/- 对应着 local/pop/imap/nntp, 如 +inbox 即为最典型的 folder。相应的 mew 的文件夹分为两类,本地 folder 和 远程 folder,本地 folder 有四种类型,+inbox/+draft/+quene/+postq。远程 folder 根据协议既可以分为三种类型,$folder/%folder/-folder,如$inbox/$inbox/-fj.mail.reader.mew。

通常来说,如果需要收发邮件,可以设置 ‘mew-name’,’mew-user’,’mew-smtp-server’ 变量,然后根据收取邮件时使用的协议,再设置 ‘mew-pop-server’ 或是 ‘mew-imap-server’ 即可。

例如,如果你需要通过 POP3 的方式使用 Gmail,以下即为简单的示例。

(setq mew-name "username")
(setq mew-pop-user "popuser@gmail")
(setq mew-pop-server "pop.gmail.com")
(setq mew-smtp-user "smtpuser@gmail.com")
(setq mew-smtp-server "smtp.gmail.com")

当然,mew 也提供了通过 ‘mew-config-alist’ 变量对相应变量进行集中设置管理的方法。如下为相应的示例。

(setq mew-config-alist
      '(
        ("default"
         ("pop-server"           . "pop.gmail.com")
         ("name"                 . "username")
         ("user"                 . "user")
         ("mail-domain"          . "gmail.com")
         ("pop-user"             . "popuser@gmail.com")
         ("smtp-user"            . "smtpuser@gmail.com")
         ("smtp-server"          . "smtp.gmail.com")
        ))

从 mew 6.1 版本开始,mew 使用了改进格式的配置文件,但旧的配置文件格式也可以同样兼容,更推荐采用新的配置文件格式。关于新旧配置文件之间的区别可以参考 mew 的使用手册。

如下为上例对应的新的文件配置格式。

(setq mew-config-alist
      '(
        (default
         (pop-server            "pop.gmail.com")
         (name                  "username")
         (user                  "user")
         (mail-domain           "gmail.com")
         (pop-user              "popuser@gmail.com")
         (smtp-user             "smtpuser@gmail.com")
         (smtp-server           "smtp.gmail.com")
        ))

‘mew-config-alist’ 更强大方便的使用之处是实现 mew 对多账户的良好支持,可以同时设置 imap/pop3/nntp/local folder。如下为 gmail 的 imap 和 smtp 的设置和新闻组的简要示例,示例采用新的 ‘mew-config-alist’ 配置文件格式。

(setq mew-config-alist
      '(
        ;; Default fetch mailbox is IMAP
        (default
         (mailbox-type          imap)
         (proto                 "%")
         (imap-server           "imap.gmail.com")
         (imap-user             "imapuser@gmail.com")
         (name                  "User Mew")
         (user                  "user")
         (mail-domain           "gmail.com")
         (imap-size             0)
         (imap-delete           t)
         (imap-queue-folder     "%queue")
         (imap-trash-folder     "%Trash") ;; This must be in concile with your IMAP box setup
         (smtp-auth-list        ("PLAIN" "LOGIN" "CRAM-MD5")) 
         (smtp-user             "smtpuser@gmail.com")
         (smtp-server           "smtp.gmail.com")
 
         ;; news group comp.lang.c
       (usenet
        (mailbox-type         . mbox)
        (proto                . -)
        (nntp-server           "news.aioe.org")
        (nntp-user             nil) ;; should be nil defaulty
        (nntp-header-only      nil)
        (nntp-newsgroup        "-comp.lang.c") ;; little '-'
        (nntp-size             0)
        (nntp-msgid-user       "User Mew")
        (smtp-auth-list        ("PLAIN" "LOGIN" "CRAM-MD5"))
        (smtp-user             "smtpuser@gmail.com")
        (smtp-server           "smtp.gmail.com")
 
        (mailinglist
         (mailbox-type          pop)
         (proto                 +)
         (pop-server            "pop.gmail.com")
         (name                  "User Mew")
         (user                  "user")
         (mail-domain           "gmail.com")
         (pop-auth              pass)
         (pop-user              "popuser@gmail.com")
         (smtp-user             "smtpuser@gmail.com")
         (smtp-server           "smtp.gmail.com")
        ))

在如上的示例中,我们分别定义了三个 folder,”default”,”usenet” 和 “mailinglist”。如果我们切换至 “usenet” folder,mew 默认会收取 comp.lang.c 新闻组上的帖子,而如过切换至 “mailing” folder,mew就会使用 pop 协议收取 Gmail 上的邮件。默认使用 mew 时,使用的为 “default” folder,即使用 imap 协议 收取 Gmail 邮件。在 summary-mode 中,可以通过快捷键 “C” 方便地在不同 folder 之间切换。

引用,回复与签名档

mew 可以灵活的设置如何引用邮件上下文,定制引用的格式。mew的引用是由变量 mew-cite-fields 控制,有 From,Subject,Date 域,具体的引用样式由 mew-cite-format 设置。mew 默认的配置如下:

(defvar mew-cite-fields '("From:" "Subject:" "Date:"))
(defvar mew-cite-format "From: %s\nSubject: %s\nDate: %s\n\n")
(defvar mew-cite-prefix "> ")

如果需要修改为 Gmail 的引用格式,可以只选择 From 和 Date 域,然后修改 mew-cite-format 即可。

(setq mew-cite-fields '("Date:"  "From:"))
(setq mew-cite-format "On %s %s wrote:\n\n")

如何回复,回复的位置,大概是邮件中争论最多的地方。基本上所有邮件的 web 客户端,Gmail,outlook 都默认使用上回复(top-posting),但是邮件列表和新闻组(usenet)提倡下回复(bottom-posting),在一个社区中使用“错误”的风格,可能被视作严重违反网络礼仪,从而遭致社区成员的激烈反应。可以参考 wikipython的邮件列表规范和礼节

回到 mew 的设置,通过设置变量 mew-summary-reply-with-citation-position 可以选择是使用上回复或是下回复。如果设置为 body,即回复出现在引文之前,名为上回复,如设置为 end,在引文后回复,使用下回复样式。

mew 默认使用的邮件签名档位于 ~/.signature 文件,由变量 mew-signature-file 控制,快捷键 ‘C-c TAB’ 会在光标处插入签名档。建议将签名档放置在邮件的末尾,可以通过 mew-signature-as-lastpart’ 与 ‘mew-signature-insert-last’设置。如果需要在撰写或是回复邮件时,需要自动插入签名档,可以通过 mew-draft-mode-newdraft-hook 进行插入。

(setq mew-signature-file "~/Mail/signature")
(setq mew-signature-as-lastpart t)
(setq mew-signature-insert-last t)
(add-hook 'mew-before-cite-hook 'mew-header-goto-body)
(add-hook 'mew-draft-mode-newdraft-hook 'mew-draft-insert-signature)

refile

对于邮件列表和新闻组,邮件过滤和 thread 功能是不可或缺的。mew 的邮件过滤功能,或是 mew 的术语称谓的 refile 很强大而实用。refile 功能对于 pop 邮箱而言非常实用,gmail 的 imap 由于可以使用 filter 与 label 的组合,也非常的完美。

如果为设置任何的 refile rules,在 summary-mode 里面按 o 即可对当前邮件进行分类,mew 会问你把邮件分类到哪个文件夹里面去,并提供了一个默认的选项,通常情况下默认选项就是正确的选项,所以直接回车就可以了。

虽然 mew 的 refil-by-guess 很方便,但是更加使用的还是自定义 refile rules。mew 提供的 refile 非常丰富,但感觉实用可定性好的还是 Guess by user defined rules。例如,如果你订阅了 octave,freebsd 的帮助邮件列表,很自然的会需要把此三个邮件列表的邮件分开存放在不同的本地文件下,而通常的邮件会存放到 inbox folder。相应的只需要把邮件头的 To 和 Cc 域里包含有 “@octave.org”的邮件 refile 到 +math/octave 文件夹中,同时把 To 和 Cc 域里含有”@freebsd.org”的邮件 refile 到 +unix/freebsd,就可以使用如下的实例代码。更详尽的 refile rules 可以参考 mew 的使用手册。

(setq mew-refile-guess-alist
      '(("To:"
         ("@octave.org"                       . "+math/octave")
         ("@freebsd.org"                      . "+unix/freebsd"))
        ("Cc:"
         ("@octave.org"                       . "+math/octave")
         ("@freebsd.org"                      . "+unix/freebsd"))
        (nil . "+inbox")))
(setq mew-refile-guess-control
      '(mew-refile-guess-by-folder
        mew-refile-guess-by-alist))

完成 refile rules 后,在收取邮件后,按下 ‘M-o’ 即可对当前 mode 下的邮件按照定义的 rules 进行 refile。然后,你想要查阅 octave 邮件列表,只需要按下 ‘g’ 与 ‘+math/octave’,就可以切换到 octave 文件夹,此时再按下 ‘tt’,既可以进入 mew 提供的 thread 功能,此时的 mode 称为 virtual folder mode,mew 会指示出各个邮件之间的层次关系,非常方便。

如果只使用小写字母命名自己的邮件文件夹的话,可以把
“mew-use-fast-refile” 设置为 t 用于加快速度。

使用 folder

在邮件服务设置完成后,就需要获取远程的邮件到本地的 +inbox folder。当输入 ‘M-x mew’,mew 会依据 ‘mew-mailbox-type’ 获取相应协议的邮件。但此时位于 summary 模式时,只需输入 ‘i’ 即可。如果用 mew 处理邮件一段时间后,需要再查收远程 folder 上的邮件,试试 ’s’ 快捷键。对于 IMAP 和 NetNews,更加建议使用 ’s’,而非 ‘i’。当按下 ’s’ 时,mew 会向你询问 range,一般而言输入’sync’ 比较合适,这会同步本地 folder,即删除已在远程服务器上删除的邮件和收取新接受的邮件。当使用 ‘C-u s’快捷键时,可以在仅获取邮件头和获取完整邮件信息间切换,相应的这是由诸如 ‘mew-pop-header-only’ 变量定义的。对于邮件列表和新闻组而言,跟推荐获取完整的邮件信息,刻意离线查阅,非常方便。

使用 Gmail IMAP 非常方便,使用 mew 配合 Gmail 的 filter 与 label 可以对邮件进行很有效的管理。如你当下在 %inbox,如果需要切换到 ‘All sent’,只需要输入 ‘g’,然后输入 ‘%[Gmail]/All Mail’ 或者使用 mew 提供方便的自动补全机制。mew 使用 folder 管理邮件,而在各个 folder 进行切换的快捷键既是方便的 ‘g’。

快捷键

mew 的日常使用可以通过各种 mode 上的菜单完成,使用快捷键也非常方便。

w 撰写新邮件
a 回复邮件,不带引用
A 回复邮件,带引用
f 转发邮件
r 重新发送邮件
SPC 阅读邮件
y 保存文件(可以保存信件全文、信件正文、附件)
C-c C-l 转换当前邮件的编码格式
C-c C-a 加入地址薄
C-u C-c C-a C-c C-a 多加入昵称和名字
C-c C-q 不保存退出
C-c C-a 准备插入附件
mew-attach-copy 用复制方式加入附件
mew-attach-link 用链接方式加入附件
mew-attach-delete 删除附件
C-c C-c 发送邮件
C-c RET 保存邮件到发送队列
C 如果设置了多个邮箱,用 C 命令切换
Q 退出Mew

Tips

summary-mode

各个 folder 的 summary-mode 显示邮件的样式由 “mew-summary-form’ 控制,通过对此变量的控制,你可以具体定制 summary-mode 显示的邮件域。特别的,summary-mode 中的 from 域还可以由变量 ‘mew-summary-form-extract-rule’进行具体的设置,可以在 ‘nickname”,’name”,’address” 和 ‘comment。自己为了使 summary-mode 显示看起来不是很拥挤,不显示 “Body:” 域,并且增加了 “Subject:” 域,更改 from 仅仅显示寄件人的 name。

(setq mew-summary-form
      '(type (5 date) " " (14 from) " " t (0 subj)))
(setq mew-summary-form-extract-rule '(name))

在设置调整好变量后,你可能会发现 summary-mode 还是没有任何变化,这是由于 mew 的默认缓存机制所致,你可以手动删除缓存文件强制 mew 重新生成。缓存文件位于相应 folder 下,例如:~/Mail/inbox/.mew-summary 。

Spam

设置 “mew-summary-form-mark-spam” 为 t 可以在 spam message 前制动添加 D。

分享家:Addthis中国
GD Star Rating
loading...
用Mew收发邮件, 8.7 out of 10 based on 20 ratings 标签:ahei, autoload, bigclean, control, Emacs, mew, org, python, screenshot, windows, 光标, 插件, 补全, 邮件客户端, 配色

相关日志

分类: Email, 中级
  1. 2010年5月21日02:16 | #1

    折腾无数次,gnus无果,还试过wanderlust,据说也是个类似的收发邮件的东东,但是同样无果。看来得试试mew

    [回复]

    ahei 回复:

    @fangzhzh, 向多发评论的fangzhzh致敬。我啥都没试过,有空先试试mew.

    [回复]

  2. bigclean
    2010年5月21日03:41 | #2

    @fangzhzh gnus也试着配置过,不过不大习惯新闻组管理邮件的形式,而且在windows下配置虽然也可以通过stunnel实现,但是相当的繁琐。

    [回复]

  3. B.QNYD
    2010年5月21日07:13 | #3

    如何实现 MEW保存收发密码?我一直没解决!

    [回复]

    bigclean 回复:

    @B.QNYD, 试试 mew-use-cached-passwd或是mew-use-master-passwd变量,如果需求一直默认保存密码,推荐后者。可以参考下mew的使用手册中关于password的章节。

    [回复]

    B.QNYD 回复:

    @bigclean, 这两句我加载了 貌似不起作用

    [回复]

    vvoody 回复:

    @B.QNYD,
    Mew提供了两种密码机制:
    1、(setq mew-user-cached-passwd t)
    开启Mew,当你第一次输入 POP 或者 SMTP 密码后,Mew 会将密码保存在内存中,
    在一段时间内(默认是20分钟)不再需要输入密码,重启Mew后依然如此。

    2、(setq mew-use-master-passwd t)
    如果你选择了这种方法,那么第一次(指修改配置后)启动Mew时,会让你输入
    一个主密码两次,然后当你第一次 POP 收信或SMTP发信输入密码后,Mew 会将
    密码暂存在内存中,当推出Mew时,Mew会把密码加密写入一个文件中。当你下次
    启动Mew时,只要输入之前设定的主密码,Mew 就会从文件中把密码解密出来暂
    存在内存,以后就不需要输入密码了。

    * 把上述任意一句放入 ~/.mew.el 中。都存在的话使用第2种; 主密码输入
    错误,如果第1种配置存在,就采用它,否则什么密码机制不采用;
    * PGP 或 S/MIME 也采用如上密码机制;
    * Summary 模式下 C-cC-m 修改主密码;
    * 暂存在内存中的密码时未加密的;

    我一般用下面的方法,master感觉不够安全,输入一次密码后直到退出 Mew 前都不需要输入密码
    (setq mew-use-cached-passwd t)
    (setq mew-passwd-timer-unit 999)
    (setq mew-passwd-lifetime 999)

    [回复]

    ahei 回复:

    @vvoody, 一看就是Mew老手阿

    [回复]

    B.QNYD 回复:

    @vvoody, 我的代码就跟你一样啊,没起作用

    我比较懒 我连一次密码都不想输入。。

    [回复]

    vvoody 回复:

    @B.QNYD, 一次都不输太不安全了阿。。。

    [回复]

    B.QNYD 回复:

    @vvoody, 关键是还是让我输入两次密码啊。、

    [回复]

    B.QNYD 回复:

    @vvoody, 发送一次 收取一次!

    [回复]

    bigclean 回复:

    @vvoody, 还是倾向于每次都输入密码,自己用cache的方式,master的方式太不安全了。btw,似乎用pgp加密发送邮件不是很多,网页客户端处理加密后的邮件不是很方便。

    [回复]

    vvoody 回复:

    @bigclean, 用了google的2-step verification后必须用master password了,不然每次都得输入很难记的密码..

    [回复]

    sweord 回复:

    @vvoody,
    我试了一下,在windows下,不能用(setq mew-use-master-passwd t),会挂死。

    查看了一下mew-passwd.el代码,发现启动后gpg后需要输入密码,
    mew用set-process-filter来实现的,但是这个filter实际 没有被调用,进入死循环了。

    也可能是我windows环境有问题 ?各位有windows下成功使用master-passwd的么?

    [回复]

    vvoody 回复:

    @sweord, 没有在windows下尝试过mew。

    [回复]

  4. ibear
    2010年5月21日21:56 | #4

    其实从配置难易上讲mew和mutt都是比较简单的,不过mutt要搭配getmail、procmail、msmtp等工具才能真正工作(这样一个邮件系统真是unix哲学的典范),而mew是一个就搞定了。

    [回复]

    bigclean 回复:

    @ibear, mutt确实是很有unix的范儿,相对mew来说gnus也是更有unix的味道。mutt是可以编译时内建支持pop3和imap,用imap时稍微简单些,使用mutt时还要了解mua,mta和mda的概念。mutt的定制性很好,很强大。

    [回复]

  5. lxes
    2010年5月22日02:55 | #5

    我怎么自定义带引用回复的body格式呀?希望在回复时,能按照我的格式进行回复。。

    [回复]

    bigclean 回复:

    @lxes, 对回复进行定制可以设置变量mew-cite-fields,mew-cite-format,详细可以查阅draft mode。draft body的定制可以参考下对回复和签名档的自定义。

    [回复]

  6. B.Qnyd
    2010年5月22日03:26 | #6

    我使用o进行分类了 然后x 执行了,但是我想读我分好类的邮件怎么读啊?

    如果分类进行处理了 使用!提示 wrong type argument:stringp, nil

    阅读归类后的文件用那个函数?

    [回复]

    lxes 回复:

    @B.Qnyd, 用g可以读分好类的邮件,可以按tab列出所有的分类

    [回复]

    B.Qnyd 回复:

    @lxes, 谢谢!非常感谢!

    [回复]

  7. lxes
    2010年5月22日08:30 | #7

    按照你的gmail配置不能成功呀!当我用i收邮件时,提示“Type ‘C-uZ’ to collect IMAP folders!”,然后我按完后,提示“Collecting local folders…done”。当我再用i收邮件的时候,第一个错误又出来了。不知道是怎么回事。。

    [回复]

    bigclean 回复:

    @lxes, 自己这里没有重现错误,可以收取邮件的。是一直不可以收取邮件吗?

    [回复]

    lxes 回复:

    @bigclean, 对。不过后来我在网上查了下,得安装stunnel,装上后pop可以收邮件,但imap还是不行,出现同样的错误

    [回复]

  8. tregedie
    2010年5月23日15:51 | #8

    请教stunnel该如何配置……

    [回复]

  9. tregedie
    2010年5月23日16:45 | #9

    tregedie :
    请教stunnel该如何配置……
    [回复]

    安装了stunnel了,可是启动mew的时候,总是Greating an SSL/TLS connection……

    [回复]

    bigclean 回复:

    @tregedie, 试试设置 mew-prog-ssl 变量,
    (setq mew-prog-ssl "C:/Program Files/stunnel/stunnel.exe")

    [回复]

    tregedie 回复:

    @bigclean,
    已经添加(setq mew-prog-ssl “/usr/bin/stunnel”)
    仍然没起作用。

    [回复]

    bigclean 回复:

    @tregedie, 试试设置下ssl验证。
    (setq mew-ssl-verify-level 0)

    [回复]

    tregedie 回复:

    @bigclean,
    level0到3到试过了,还是没用,看来要用mutt了 :-?

    [回复]

    ylhufo 回复:

    我的也不行,只好用fetchmail获取gmail邮件,用mew查看邮件了

    [回复]

  10. 2010年5月28日17:47 | #10

    文章很好,很实用,感谢1

    [回复]

评论分页
1 2 3 ... 5 41385
  1. 2010年5月21日08:29 | #1
  2. 2010年11月16日13:26 | #2
  3. 2011年3月25日23:32 | #3
  4. 2011年12月22日17:25 | #4
:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: