mu4e - cuentas múltiples


22

Estoy usando el mu4ecorreo electrónico en Emacs, y actualmente solo está configurado para una cuenta de correo, y configuré la clave para ver diferentes bandejas de entrada. Me pregunto cómo usar mu4e para administrar múltiples cuentas de correo electrónico.

Respuestas:


17

Estoy usando mu4e con dos cuentas. Cada cuenta tiene su propio maildir:

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

El manual viene con una función de ejemplo para elegir una cuenta:

(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 eso funcione, también necesitarás 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))

Simplemente puede cambiar entre carpetas de correo con j, siempre y cuando todos sus maildirs sean subdirectorios de mu4e-maildir.

En realidad estoy usando una función más elaborado para mu4e-trash-foldery mu4e-refile-folderpara evitar mover los mensajes de una carpeta de correo a otra, pero la información anterior debería ser suficiente para utilizar varias cuentas.


Me cuesta comprender cómo mu4e sabe qué bandeja de entrada mostrar. No hay ninguna mu4e-inbox-foldervariable, y cuando presiono jirecibo correo entrante de todas mis cuentas, no solo del trabajo o del contexto privado.
AstroFloyd

6

Estoy usando dos cuentas diferentes que quiero mezclar lo menos posible.

offlineimap está configurado con dos cuentas, una entregando correo en ~/.maildir-workla otra ~/.maildir-home.

Mi configuración para mu4e usa el nuevo 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")
                   ...))))

Tengo problemas para que este ejemplo funcione. Por los documentos de los mu4e-maildiry mu4e-mu-homeno se supone que las variables para poder sustituirse sin dejar de mu4e primero. Publiqué un poco más de detalle aquí en mi configuración.
kostajh

De hecho, he tenido que recurrir a reiniciar Emacs al cambiar. Para mí eso todavía vale la pena.
Magnus

2

Estoy usando una configuración muy similar a la de Magnus, y solo quería agregar que (mu4e-quit)existe, y funciona bien para limpiar cuentas sin 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))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.