Emacs收发邮件完全操作指南: Send-Mail, Rmail and Gnus

如果仅仅是收的话, 可以将outlook 的自动转发到qq,只收qq的即可。发的话就不好解决了。

这种转发的 gnus 好像看不到。我在 qq 下面 “我的文件夹” 下面自动分类了一个文件夹,在 gnus 里都看不到。我说的“看不到”是说在 gnus 的 group 界面没有,按 ^ 在 server 界面也找不到。不知道是不是需要在 gnus 里面做什么设置。

不要用qq 的分类, 我也试了,qq 我的文件夹下的用imap 同步的时候, 只有第1次能同步, 后续的变动 都同步不了, 把所有qq 的都放到收件箱里, 让gnus 的nnselect 来做分组。

我用 gnus 用的比较浅,我去看下这个怎么配置。或者你有没样例配置给我参考下。

可以看下我上面 init-my-gnus-group 相关的内容, 需要用到notmuch 来做搜索后端。

安装后配置极其简单,直接运行 notmuch setup

[database]
path=/home/username/maildir
[user]
name=username
[email protected]
[email protected]
[new]
tags=unread;inbox;
ignore=.uidvalidity;.mbsyncstate.new;.mbsyncstate.journal;.mbsyncstate;slrnpull.conf;pass;.nnmaildir;active
[search]
[index]
# 支持的搜索自定义header
# https://stackoverflow.com/questions/37480617/search-for-custom-header-value-in-notmuch
# after change config run:  notmuch reindex '*'
# then search with: notmuch search List:emacs-devel
header.List=List-Post

[maildir]
synchronize_flags=true

#  Local Variables:
#  mode: conf
#  eval: (add-hook (make-local-variable 'after-save-hook) #'(lambda()(shell-command "gpg -d notmuch-config.gpg>notmuch-config")) t)
#  End:

Outlook 看我之前发的帖子。

补充一下: msmtp 也支持 oauth2 验证方式。把 auth 方式还有 passevalcmd 照着 mbsync 的配置方式 改一下就行。

1 个赞

感谢,原来是这样。看了下,配置好复杂,而且不能跨平台。看后面 gnus 能不能支持 oauth2。

mbsync 本来就不支持 windows。mac 的 homebrew 版还不支持 oauth2 要自己编译。我最后就干脆直接搞了个容器一劳永逸了。每次同步邮件就挂载一下 maildir 就好了。某种意义上用容器也算跨全平台了:rofl::rofl:

我平时就查看邮件(也很少),稍微复杂的方案都放弃 :rofl:。我现在邮件配置就一行:

(setopt gnus-select-method
	'(nnimap "foxmail.cs"
		 (nnimap-address "imap.qq.com")))

我知道什么原因了,需要在 qq 邮箱中设置一下,才能用 gnus 收取这个目录下的邮件:

打开这个“收取”我的文件夹“这个开关。

这样设置后,直接从 qq 邮件里面过滤邮件,应该也可以。我准备试一下,如果可以我准备用这种方案。因为我用邮件不多,希望尽量简单,依赖的工具,平台越少越好。

我用下面的配置测试了一下没问题:

(setopt gnus-select-method
	'(nnimap "foxmail.cs"
		 (nnimap-address "imap.qq.com")
		 (nnimap-inbox "INBOX")
		 (nnimap-split-fancy (| (any "[email protected]" "emacs-devel")
					(any "[email protected]" "emacs-help")
					"INBOX"))))

开了这个以我的经验只第一次能拉下来 后续的变更同步不了

确实如此,之前我都没打开那个选项,没明白你说的“只能第一次同步”的意思。我感觉是 QQ 邮箱的问题,因为我之前用 outlook 就可以的。

现在也只能这样了,好消息是现在可以查看其他邮箱转发过来的邮件。我本来用邮件也不多,也够我用了。

gnus,163 我用 pop3 协议,古老但是稳定

有试过用gnus连接网易的imap吗,我设置了发觉,只能加载文件夹,读邮箱就不行。后来用C#连上去发现,网易imap连上去还要加上一步,添加ID COMMAND来表明身份,就是不清楚gnus里怎么设置。

    imapClient.Connect("imap.126.com", 993, true);
    // 认证邮箱
    imapClient.Authenticate(username, password);

    var clientImplementation = new ImapImplementation
    {
        Name = "IMAPClient",
        Version = "2.1.0"
    };
    var serverImplementation = imapClient.Identify(clientImplementation);
    var inbox = imapClient.GetFolder("INBOX");
    inbox.Open(FolderAccess.ReadOnly);
1 个赞

以前试过,感觉老是有问题,懒得折腾了,也许是 163 为了推广自家的客户端搞得小动作。

邮件折腾起来好麻烦,各种小问题,国内又没有用邮件的习惯和氛围,完全是浪费时间。所以我把自己之前折腾的 gnus 配置全删了,只留一行:

(setopt gnus-select-method
	'(nnimap "foxmail.cs"
		 (nnimap-address "imap.qq.com")))

有问题除非几行能搞定,不然是不可能在搞了。

1 个赞

挖坟, 折腾一下, 分享一下我的朴素的配置 (RMail Only):

最基本的设置:

;;; Getting Mail
;; see https://www.emacswiki.org/emacs/GettingMail

;; NOTE: `rmail-preserve-inbox' may be dangerous.
(setq rmail-preserve-inbox     nil ;; 选择在邮件服务器上删掉下载的邮件
      rmail-mail-new-frame     t
      rmail-movemail-flags     nil    ;; 可以选择加上其他的参数?
      rmail-mime-prefer-html   nil
      rmail-file-coding-system t)

;; Sending Mail

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

然后为了支持多客户端的读取, 可以使用以下的切换函数 (其他客户端同理):

(defun ryo.mail:qq ()
  "Switch to QQ Mail. "
  (interactive)
  (let ((rmail-file-name "/path/to/Mail/mbox")
        (rmail-inbox-list (list (concat "pops://"
                                        "balabala%40qq.com"
                                        ":thisIs_your-password"
                                        "@pop.qq.com:995")))
        (user-mail-address     "[email protected]")
        (user-full-name        "凉凉")
        (smtpmail-smtp-user    "[email protected]")
        (smtpmail-smtp-server  "smtp.qq.com")
        (smtpmail-smtp-service 465)
        (smtpmail-stream-type  'ssl))
    (rmail)))

(注: 不过这个 rmail-preserve-inbox 的操作挺怪的, 因为如果选择保留, 那么每次同步的时候会把所有的 inbox 邮件全部同步进来… 也许是正常操作就是要从邮件服务器上删除, 或者移动到 archieve 文件夹里面… 不过这么做的问题就是让我的邮件被菜逼操作给全删掉了 :sweat_droplets:, 还好用的是非重要的邮箱… 于是我的解决办法就是在我完全会用之前, 让其他邮箱自动转发到非重要的邮箱, 然后对这个非重要的邮箱狠狠开刀.

(defun ryo.mail:compose-qq ()
  (interactive)
  (let ((user-mail-address     "[email protected]")
        (user-full-name        "凉凉")
        (smtpmail-smtp-user    "[email protected]")
        (smtpmail-smtp-server  "smtp.qq.com")
        (smtpmail-smtp-service 465)
        (smtpmail-stream-type  'ssl))
    (compose-mail)))

也可以用这个函数指定写信服务器.

在性能上, 因为从服务器 inbox 上删掉了邮件, 每次基本都只是同步几封邮件, 所以感觉还挺快的?

1 个赞

顺便问一下,用Emacs访问o365邮件有什么好办法吗?

我尝试配置davmail好几次,一直都没成功。。。