Emacs: 收发邮件

最近有时间折腾, 搞定了腾讯企业邮邮箱在 Emacs 中的配置, 可以在 Emacs 中收发邮件了.

Workflow

Emacs 收发邮件的 工作流程 如下图:

简单来说, 收邮件分为三个步骤:

  1. 离线下载服务器邮件到本地 mbsync
  2. 索引邮件 mu
  3. 阅读邮件 mu4e

发邮件就更简单了:

  1. 写邮件 M-x mail
  2. 发邮件 msmtp

安装配置

命令行安装需要的包

在 macOS 上, 用 Homebrew 安装:

# isync提供了mbsync, 用于离线下载邮件
brew install isync

# mu用于索引邮件
brew install mu

# msmtp用于发送邮件
brew install msmtp

#w3m用于阅读HTML邮件
brew install w3m

# 用于加密密码 主页: https://www.passwordstore.org/
brew install pass

配置 mbsync

# mbsyncrc based on
# http://www.ict4g.net/adolfo/notes/2014/12/27/EmacsIMAP.html

# ACCOUNT INFORMATION
IMAPAccount QQmail
Host imap.exmail.qq.com
Port 993
User i@lijigang.com
PassCmd "/usr/local/bin/pass email/i@lijigang.com"
AuthMechs LOGIN
SSLType IMAPS
SSLVersions TLSv1.2


# REMOTE STORAGE (USE THE IMAP ACCOUNT SPECIFIED ABOVE)
IMAPStore QQmail-remote
Account QQmail

# LOCAL STORAGE (CREATE DIRECTORIES with mkdir -p ~/Maildir/QQmail)
MaildirStore QQmail-local
Path ~/Maildir/QQmail/
Inbox ~/Maildir/QQmail/INBOX
Trash trash

Channel QQmail-folders
Master :QQmail-remote:
Slave :QQmail-local:
Patterns "INBOX" "Drafts" "Arch*" "Sent*" "Trash" "Junk" "Deleted*"
Create Both
Expunge Both
SyncState *

Group QQmail
Channel QQmail-folders

注意 PassCmd 这行, 是调用了 pass 命令来读取密码.

配置 mu4e

我用的 Spacemacs 中有 mu4e layer, 所以只需要在 dotspacemacs-configuration-layers 中添加下面相关配置即可

(mu4e :variables
           mu4e-maildir "~/Maildir"
           mu4e-attachment-dir "~/Documents/QQmail-attachment"
           mu4e-get-mail-command "/usr/local/bin/mbsync -a"
           mu4e-html2text-command "/usr/local/bin/w3m -T text/html"
           mu4e-use-fancy-chars t
           mu4e-drafts-folder "/QQmail/Drafts"
           mu4e-sent-folder "/QQmail/Sent"
           mu4e-trash-folder "/QQmail/Trash"
           mu4e-refile-folder "/QQmail/All"
           mu4e-alert-interesting-mail-query "flag:unread AND maildir:/INBOX"
           mu4e-enable-notifications t
           mu4e-update-interval 300
           mu4e-maildir-shortcuts
           '( ("/INBOX"               . ?i)
              ("/QQmail/Sent"   . ?s)
              ("/QQmail/Trash"       . ?t)
              ("/QQmail/All"    . ?a))
           )

配置 msmtp

defaults
tls           on
logfile       ~/.msmtp.log

account QQmail
host          smtp.exmail.qq.com
port          465
tls           on
tls_certcheck off
tls_starttls  off
auth          on
from          i@lijigang.com
user          i@lijigang.com
passwordeval  /usr/local/bin/pass email/i@lijigang.com

同样的, 注意 passwordeval 这行, 使用 pass 工具来读取加密的密码.

全部配置完成后, 调用 M-x mu4e 即可看到使用界面了: