Tôi đang sử dụng mu4e
email trong Emacs và hiện tại nó chỉ được định cấu hình cho một tài khoản thư và tôi đặt khóa để xem các hộp thư đến khác nhau. Tôi tự hỏi làm thế nào để sử dụng mu4e để quản lý nhiều tài khoản email?
Tôi đang sử dụng mu4e
email trong Emacs và hiện tại nó chỉ được định cấu hình cho một tài khoản thư và tôi đặt khóa để xem các hộp thư đến khác nhau. Tôi tự hỏi làm thế nào để sử dụng mu4e để quản lý nhiều tài khoản email?
Câu trả lời:
Tôi đang sử dụng mu4e với hai tài khoản. Mỗi tài khoản có maildir riêng:
~/Mail
|
+---- work
|
`---- private
Hướng dẫn đi kèm với một chức năng ví dụ để chọn một tài khoản:
(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)
Để làm việc đó, bạn cũng sẽ cần 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))
Bạn chỉ có thể chuyển đổi giữa các thư mục thư với j
, miễn là tất cả các thư của bạn là thư mục con của mu4e-maildir
.
Tôi thực sự đang sử dụng một chức năng phức tạp hơn cho mu4e-trash-folder
và mu4e-refile-folder
để tránh di chuyển email từ một maildir sang một mail khác, nhưng thông tin ở trên là đủ để sử dụng nhiều tài khoản.
Tôi đang sử dụng hai tài khoản khác nhau mà tôi muốn trộn ít nhất có thể.
offlineimap được cấu hình với hai tài khoản, một tài khoản gửi thư vào tài khoản ~/.maildir-work
kia ~/.maildir-home
.
Cấu hình của tôi cho mu4e sử dụng cơ chế ngữ cảnh mới:
(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")
...))))
Tôi đang sử dụng một thiết lập rất giống với Magnus ', và chỉ muốn thêm cái đó (mu4e-quit)
tồn tại và nó hoạt động tốt để dọn dẹp tài khoản mà không cần khởi động lại. Cơ chế thực tế:
(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
biến, và khi tôi nhấnji
tôi nhận được thư đến từ tất cả các tài khoản của mình, không chỉ là bối cảnh công việc hay riêng tư.