`mu4e-contexts` บัญชี Gmail หลายบัญชีโดยใช้ข้อมูลประจำตัว smtp ที่ไม่ถูกต้อง


11

ฉันพยายามที่จะตั้งค่า Gmail หลายบัญชีโดยใช้mu4e-context's ฉันมีคุณสมบัติมากมายที่ทำงานได้ยกเว้นคุณสมบัติเดียว ฉันสามารถสลับระหว่างบริบทอัปเดตเมลของฉันในแต่ละบัญชี (ใช้ออฟไลน์แผนที่) และฉันสามารถส่งอีเมลได้

ปัญหาคือฉันมีหลายบรรทัดใน.authinfoไฟล์ของฉันที่มีชื่อโฮสต์เดียวกัน - ฉันสันนิษฐานว่าmu4eจะสามารถแยกความแตกต่างด้วยชื่อผู้ใช้สิ่งนี้ดูเหมือนจะไม่เป็นเช่นนั้น ไม่สำคัญว่าฉันอยู่ในบริบทใดอีเมลจะถูกส่งจากบัญชีที่มีการกำหนดค่าก่อนใน.authinfoไฟล์เสมอ

ฉันไม่ทราบวิธีการทำให้แต่ละบริบทใช้ข้อมูลรับรองแยกต่างหากสำหรับการเข้าสู่เซิร์ฟเวอร์ Gmail SMTP

ฉันคิดเกี่ยวกับความพยายามที่จะตั้งค่านามแฝงชื่อโฮสต์บางอย่างเพื่อให้personal.gmail.comและwork.gmail.comทั้งมีมติให้smtp.gmail.comเพื่อที่ฉันสามารถให้พวกเขามีชื่อเครื่องแยกauthinfoแต่ผมไม่แน่ใจว่าเพื่อให้บรรลุนี้ (ใน OSX) หรือแม้กระทั่งถ้าหากมันเป็นวิธีที่เหมาะสมในการแก้ปัญหานี้ (เป็นการดีที่ฉันไม่ต้องลิงรอบกับ config นอก 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" )))))

คุณสามารถแก้ไขปัญหานี้ได้หรือไม่
ปิแอร์

คำตอบ:


5

เกือบสองปีแล้วที่คำถามถูกถาม แต่ฉันเพิ่งมีปัญหาเดียวกันและฉันจัดการเพื่อแก้ไขโดยใช้smtpmail-smtp-userตัวแปร ในคู่มือบอกว่า:

หากตัวแปร smtpmail-smtp-user ถูกตั้งค่าเป็นค่าที่ไม่ใช่ศูนย์ดังนั้นจะพิจารณาเฉพาะรายการสำหรับผู้ใช้นั้น

ในบริบทส่วนบุคคลของฉันฉันมี vars:

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

ในบริบทการทำงานของฉันฉันมี vars:

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

ฉันทดสอบเพียงสั้น ๆ แต่ดูเหมือนว่าจะทำงานได้อย่างถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.