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?

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

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.


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")
                   ...))))

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))
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.