mu4e - หลายบัญชี


22

ฉันกำลังใช้mu4eสำหรับอีเมลใน Emacs และปัจจุบันมีการกำหนดค่าสำหรับบัญชีอีเมลเดียวเท่านั้นและฉันได้ตั้งค่าคีย์เพื่อดูกล่องจดหมายที่แตกต่างกัน ฉันสงสัยว่าจะใช้ mu4e เพื่อจัดการบัญชีอีเมลหลายบัญชีได้อย่างไร

คำตอบ:


17

ฉันใช้ mu4e กับสองบัญชี แต่ละบัญชีมี maildir ของตนเอง:

~/Mail
|
+---- work
|
`---- private

คู่มือมาพร้อมกับฟังก์ชั่นตัวอย่างเพื่อเลือกบัญชี:

(defun my-mu4e-set-account ()
  "Set the account for composing a message."
  (let* ((account
          (if mu4e-compose-parent-message
              (let ((maildir (mu4e-message-field mu4e-compose-parent-message :maildir)))
                (string-match "/\\(.*?\\)/" maildir)
                (match-string 1 maildir))
            (completing-read (format "Compose with account: (%s) "
                                     (mapconcat #'(lambda (var) (car var))
                                                my-mu4e-account-alist "/"))
                             (mapcar #'(lambda (var) (car var)) my-mu4e-account-alist)
                             nil t nil nil (caar my-mu4e-account-alist))))
         (account-vars (cdr (assoc account my-mu4e-account-alist))))
    (if account-vars
        (mapc #'(lambda (var)
                  (set (car var) (cadr var)))
              account-vars)
      (error "No email account found"))))

;; ask for account when composing mail
(add-hook 'mu4e-compose-pre-hook 'my-mu4e-set-account)

เพื่อการทำงานคุณจะต้องmy-mu4e-account-alist:

(defvar my-mu4e-account-alist
  '(("private"
     (user-mail-address  "private@domain.net")
     (user-full-name     "My Name")
     (mu4e-sent-folder   "/private/Sent Items")
     (mu4e-drafts-folder "/private/Drafts")
     (mu4e-trash-folder  "/private/Deleted Items")
     (mu4e-refile-folder "/private/Archive"))
    ("work"
     (user-mail-address  "work@domain.net")
     (mu4e-sent-folder   "/work/Sent Items")
     (mu4e-drafts-folder "/work/Drafts")
     (mu4e-trash-folder  "/work/Deleted Items")
     (mu4e-refile-folder "/work/Archives"))))

(setq mu4e-user-mail-address-list
      (mapcar (lambda (account) (cadr (assq 'user-mail-address account)))
              my-mu4e-account-alist))

คุณก็สามารถสลับระหว่างโฟลเดอร์อีเมลด้วยjตราบใดที่ทุก maildirs mu4e-maildirของคุณมีไดเรกทอรีย่อยของ

ฉันจริงใช้ฟังก์ชั่นที่ซับซ้อนมากขึ้นสำหรับmu4e-trash-folderและmu4e-refile-folderเพื่อหลีกเลี่ยงการย้ายอีเมลจากหนึ่ง Maildir ไปอีก แต่ข้อมูลดังกล่าวข้างต้นควรจะเพียงพอที่จะใช้หลายบัญชี


ฉันพยายามที่จะเข้าใจว่า mu4e รู้ว่ากล่องจดหมายใดจะแสดง ไม่มีmu4e-inbox-folderตัวแปรและเมื่อฉันกดjiฉันจะได้รับจดหมายขาเข้าจากทุกบัญชีของฉันไม่ใช่แค่บริบทการทำงานหรือส่วนตัว
AstroFloyd

6

ฉันใช้สองบัญชีที่ต่างกันที่ฉันต้องการผสมให้น้อยที่สุด

OfflineIMAPการกำหนดค่ากับทั้งสองบัญชีหนึ่งส่งจดหมายเข้ามาอีกคนหนึ่งเข้า~/.maildir-work~/.maildir-home

การกำหนดค่าของฉันสำหรับmu4eใช้กลไกบริบทใหม่:

(setq mu4e-contexts
      `( ,(make-mu4e-context
           :name "home"
           :match-func (lambda (_) (string-equal "home" (mu4e-context-name mu4e~context-current)))
           :enter-func '()
           :leave-func (lambda () (mu4e-clear-caches))
           :vars '((mu4e-maildir . "~/.maildir-home")
                   (mu4e-mu-home . "~/.mu-home")
                   (mu4e-get-mail-command . "offlineimap -a Home")
                    ...))
         ,(make-mu4e-context
           :name "work"
           :match-func (lambda (_) (string-equal "work" (mu4e-context-name mu4e~context-current)))
           :enter-func '()
           :leave-func (lambda () (mu4e-clear-caches))
           :vars '((mu4e-maildir . "~/.maildir-work")
                   (mu4e-mu-home . "~/.mu-work")
                   (mu4e-get-mail-command . "offlineimap -a Work")
                   ...))))

ฉันมีปัญหาในการทำให้ตัวอย่างนี้ทำงานได้ ต่อเอกสารmu4e-maildirและmu4e-mu-homeตัวแปรไม่ควรที่จะมีการเปลี่ยนแปลงโดยไม่ต้องเลิก mu4e แรก ฉันโพสต์รายละเอียดเพิ่มเติมเล็กน้อยที่นี่ในการตั้งค่าของฉัน
kostajh

แน่นอนฉันต้องหันไปรีสตาร์ท Emacs เมื่อเปลี่ยน สำหรับฉันมันยังคงคุ้มค่า
แมกนัส

2

ฉันใช้การตั้งค่าที่คล้ายกับของ Magnus มากและแค่ต้องการเพิ่มมัน(mu4e-quit)มีอยู่แล้วและมันก็ใช้งานได้ดีสำหรับการล้างบัญชีโดยไม่ต้องเริ่มต้นใหม่ กลไกที่แท้จริง:

(defun mail-gmail ()
  (interactive)
  (setenv "MAILDIR" "/Users/foo/Maildir/gmail")
  (setenv "MU_HOME" "/Users/foo/.mu/gmail")
  (setq mu4e-maildir "/Users/foo/Maildir/gmail")
  (setq user-mail-address "...")
  (mu4e-quit))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.