ฉันกำลังใช้mu4e
สำหรับอีเมลใน Emacs และปัจจุบันมีการกำหนดค่าสำหรับบัญชีอีเมลเดียวเท่านั้นและฉันได้ตั้งค่าคีย์เพื่อดูกล่องจดหมายที่แตกต่างกัน ฉันสงสัยว่าจะใช้ mu4e เพื่อจัดการบัญชีอีเมลหลายบัญชีได้อย่างไร
ฉันกำลังใช้mu4e
สำหรับอีเมลใน Emacs และปัจจุบันมีการกำหนดค่าสำหรับบัญชีอีเมลเดียวเท่านั้นและฉันได้ตั้งค่าคีย์เพื่อดูกล่องจดหมายที่แตกต่างกัน ฉันสงสัยว่าจะใช้ mu4e เพื่อจัดการบัญชีอีเมลหลายบัญชีได้อย่างไร
คำตอบ:
ฉันใช้ 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 ไปอีก แต่ข้อมูลดังกล่าวข้างต้นควรจะเพียงพอที่จะใช้หลายบัญชี
ฉันใช้สองบัญชีที่ต่างกันที่ฉันต้องการผสมให้น้อยที่สุด
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")
...))))
ฉันใช้การตั้งค่าที่คล้ายกับของ 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))
mu4e-inbox-folder
ตัวแปรและเมื่อฉันกดji
ฉันจะได้รับจดหมายขาเข้าจากทุกบัญชีของฉันไม่ใช่แค่บริบทการทำงานหรือส่วนตัว