mu4e - nhiều tài khoản


22

Tôi đang sử dụng mu4eemail 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:


17

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-foldermu4e-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 đấu tranh để hiểu làm thế nào mu4e biết hộp thư đến nào sẽ hiển thị. Không có mu4e-inbox-folderbiến, và khi tôi nhấn jitô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ư.
AstroFloyd

6

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-workkia ~/.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 gặp khó khăn khi làm ví dụ này làm việc. Mỗi tài liệu các mu4e-maildirmu4e-mu-homecác biến không được nghĩa vụ phải được thay đổi mà không cần bỏ mu4e đầu tiên. Tôi đã đăng thêm một chút chi tiết ở đây trên thiết lập của tôi.
kostajh

Thật vậy, tôi đã phải dùng đến việc khởi động lại Emacs khi chuyển đổi. Đối với tôi điều đó vẫn còn giá trị nó.
Magnus

2

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))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.