mu4e - несколько аккаунтов

22

Я использую mu4eдля электронной почты в Emacs, и в настоящее время он настроен только для одной учетной записи почты, и я установил ключ для просмотра различных входящих сообщений. Интересно, как использовать mu4e для управления несколькими учетными записями электронной почты?

yi.tang.uni
источник

Ответы:

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, пока все ваши почтовые ящики являются подкаталогами mu4e-maildir.

Я на самом деле использовать более сложную функцию mu4e-trash-folderи , mu4e-refile-folderчтобы избежать перемещения письма от одного MAILDIR к другому, но вышеуказанная информация должна быть достаточной , чтобы использовать несколько учетных записей.

rekado
источник
Я изо всех сил пытаюсь понять, как mu4e знает, какой почтовый ящик показать. mu4e-inbox-folderПеременных нет , и когда я нажимаю, jiя получаю входящую почту со всех своих учетных записей, а не только с рабочего или личного контекста.
AstroFloyd
6

Я использую два разных аккаунта, которые я хочу смешать как можно меньше.

Автономная карта настроена с двумя учетными записями, одна доставляет почту в ~/.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 первого. Я разместил немного больше деталей здесь на моей установке.
Костайх
Действительно, мне пришлось прибегнуть к перезапуску 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))
Ланг Мартин
источник