mu4e - várias contas

22

Estou usando o mu4eemail no Emacs e, atualmente, ele está configurado apenas para uma conta de email e defino a tecla para exibir caixas de entrada diferentes. Gostaria de saber como usar o mu4e para gerenciar várias contas de email?

yi.tang.uni
fonte

Respostas:

17

Estou usando o mu4e com duas contas. Cada conta tem seu próprio maildir:

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

O manual vem com um exemplo de função para escolher uma conta:

(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)

Para que isso funcione, você também precisará de my-mu4e-account-alist:

(defvar my-mu4e-account-alist
  '(("private"
     (user-mail-address  "[email protected]")
     (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  "[email protected]")
     (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))

Você pode simplesmente alternar entre pastas de e-mail com j, desde que todas as suas maildirs sejam subdiretórios mu4e-maildir.

Na verdade, estou usando uma função mais elaborado para mu4e-trash-foldere mu4e-refile-folderpara evitar mover e-mails de um maildir para outro, mas as informações acima deve ser suficiente para usar várias contas.

rekado
fonte
Estou lutando para entender como o mu4e sabe qual caixa de entrada mostrar. Não há mu4e-inbox-foldervariável e, quando pressiono ji, recebo emails de todas as minhas contas, não apenas do trabalho ou do contexto privado.
AstroFloyd
6

Estou usando duas contas diferentes que quero misturar o mínimo possível.

offlineimap é configurado com duas contas, uma entregando correio na ~/.maildir-workoutra ~/.maildir-home.

Minha configuração para o mu4e usa o novo mecanismo de contexto:

(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
fonte
Estou tendo problemas para que este exemplo funcione. De acordo com os documentos, as variáveis mu4e-maildire mu4e-mu-homenão devem ser alteradas sem sair do mu4e primeiro. Publiquei um pouco mais de detalhes aqui na minha configuração.
Kostajh
Na verdade, tive que recorrer ao Emacs ao mudar. Para mim, isso ainda vale a pena.
197 Magnus
2

Estou usando uma configuração muito parecida com a do Magnus, e só queria acrescentar a que (mu4e-quit)existe, e funciona bem para limpar contas sem reiniciar. Mecanismo real:

(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))
Lang Martin
fonte