`mu4e-contexts`使用不正确的SMTP凭据的多个Gmail帐户


11

我正在尝试使用设置多个Gmail帐户mu4e-context。除了一个功能外,我还有很多其他功能。我可以在上下文之间切换,更新每个帐户中的邮件(使用offlineimap),然后可以发送邮件。

问题是我的.authinfo文件中有多行具有相同的主机名-我以为mu4e可以按用户名区分,但事实并非如此。不要紧,这方面我在,邮件总是被从所配置的帐户发送的第一个.authinfo的文件。

我不知道如何使每个上下文使用单独的凭据登录Gmail SMTP服务器。

我想过尝试一些主机别名,以便建立personal.gmail.comwork.gmail.com双方决心smtp.gmail.com,这样我可以给他们在不同的机器名authinfo,但我不能确定如何实现这一目标(在OSX),或者即使它是解决这个问题的一个明智的方法(理想情况下,我不必非要在Emacs之外进行配置)。

我的authinfo看起来像这样

machine smtp.gmail.com login personal@example.com port 587 password fakepassword
machine smtp.gmail.com login work@example.com port 587 password fakepassword

我的mu4e-config的相关部分是:

(setq mu4e-get-mail-command "offlineimap")
(setq mail-user-agent 'mu4e-user-agent)
(setq message-send-mail-function 'smtpmail-send-it)

(setq smtpmail-stream-type 'starttls)
(setq smtpmail-default-smtp-server "smtp.gmail.com")
(setq smtpmail-smtp-server "smtp.gmail.com")
(setq smtpmail-smtp-service 587)

(setq mu4e-contexts
      `( ,(make-mu4e-context
           :name "personal"
           :enter-func (lambda () (mu4e-message "Switch to Personal context"))
           ;; leave-func not defined
           :match-func (lambda (msg)
                         (when msg
                           (mu4e-message-contact-field-matches msg :to "personal@example.com")))
           :vars '(  (user-mail-address . "personal@example.com"  )
                     (mu4e-drafts-folder . "/personal/drafts")
                     (mu4e-sent-folder   . "/personal/sent")
                     (mu4e-trash-folder  . "/personal/bin")
                     (mu4e-maildir-shortcuts . (("/personal/INBOX" . ?i)
                                                ("/personal/sent"  . ?s)
                                                ("/personal/bin"   . ?t)))
                     (smtpmail-mail-address . "personal@example.com")
                     (user-full-name    . "Matt Valentine-House" )))
         ,(make-mu4e-context
           :name "work"
           :enter-func (lambda () (mu4e-message "Switch to Work context"))
           ;; leave-fun not defined
           :match-func (lambda (msg)
                         (when msg
                           (mu4e-message-contact-field-matches msg :to "work@example.com")))
           :vars '(  (user-mail-address . "work@example.com" )
                     (mu4e-drafts-folder . "/work/drafts")
                     (mu4e-sent-folder   . "/work/sent")
                     (mu4e-trash-folder  . "/work/bin")
                     (mu4e-maildir-shortcuts . (("/work/INBOX" . ?i)
                                                ("/work/sent"  . ?s)
                                                ("/work/bin"   . ?t)))
                     (smtpmail-mail-address . "work@example.com")
                     ( user-full-name    . "Matthew Valentine-House" )))))

您能解决这个问题吗?
Pierre

Answers:


5

提出问题已经快两年了,但是我遇到了同样的问题,并且设法使用smtpmail-smtp-user变量解决了这个问题。在手册中说:

如果变量smtpmail-smtp-user设置为非null值,则仅考虑该用户的条目。

就我个人而言,我有:

(smtpmail-smtp-user . "personal@example.com")

在我的工作环境中,我有:

(smtpmail-smtp-user . "work@example.com")

我仅对其进行了简短的测试,但它似乎可以正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.