`mu4e-contexts`が不正なSMTP認証情報を使用する複数のGmailアカウント


10

を使用して複数のGmailアカウントを設定しようとしていますmu4e-context。1つを除いて多くの機能が動作しています。コンテキストを切り替え、各アカウントでメールを更新し(offlineimapを使用)、メールを送信できます。

問題は、.authinfoファイルに複数の行があり、同じホスト名が含まれているmu4eことです。ユーザー名で区別できると想定していたのですが、そうではないようです。私がどのコンテキストにいるかに関係なく、メールは常にファイルで最初に構成されたアカウントから送信され.authinfoます。

Gmail SMTPサーバーにログインするために、各コンテキストで個別の認証情報を使用する方法がわかりません。

私はいくつかのホスト名エイリアスを設定してpersonal.gmail.comwork.gmail.com両方で解決しsmtp.gmail.com、それらに別々のマシン名をで与えられるようにすることを考えましたがauthinfo、これを(OSXで)実現する方法がわからない、またはこの問題を解決するための賢明な方法であるかどうかさえ不明です(理想的には、Emacsの外でconfigを使用する必要はありません)。

私の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

回答:


5

質問されてからほぼ2年になりますが、私は同じ問題を抱えていて、smtpmail-smtp-user変数を使用してなんとか解決できました。マニュアルではそれは言う:

変数smtpmail-smtp-userが非nil値に設定されている場合、そのユーザーのエントリのみが考慮されます。

私の個人的な文脈では、私が持っている変数:

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

私の仕事のコンテキスト変数では:

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

私はそれを簡単にテストしただけですが、正しく動作しているようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.