mu4e: più account


22

Sto usando mu4eper la posta elettronica in Emacs, ed è attualmente configurato solo per un account di posta e ho impostato la chiave per visualizzare la posta in arrivo diversa. Mi chiedo come utilizzare mu4e per la gestione di più account e-mail?

Risposte:


17

Sto usando mu4e con due account. Ogni account ha il suo maildir:

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

Il manuale include una funzione di esempio per scegliere un account:

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

Perché funzioni, avrai anche bisogno di 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))

Puoi semplicemente passare da una cartella di posta all'altra j, purché tutti i tuoi dispositivi secondari siano sottodirectory mu4e-maildir.

In realtà sto usando una funzione più elaborata per mu4e-trash-foldere mu4e-refile-folderper evitare di spostare le e-mail da un maildir all'altro, ma le informazioni sopra dovrebbero essere sufficienti per utilizzare più account.


Sto lottando per capire come mu4e sappia quale casella di posta mostrare. Non ci sono mu4e-inbox-foldervariabili e quando premo jiricevo la posta in arrivo da tutti i miei account, non solo dal lavoro o dal contesto privato.
AstroFloyd

6

Sto usando due account diversi che voglio mescolare il meno possibile.

offlineimap è configurato con due account, uno che consegna posta ~/.maildir-worknell'altro ~/.maildir-home.

La mia configurazione per mu4e utilizza il nuovo meccanismo di contesto:

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

Ho problemi a far funzionare questo esempio. Secondo i documenti, le variabili mu4e-maildire mu4e-mu-homenon dovrebbero essere modificabili senza prima uscire da mu4e. Ho pubblicato un po 'più di dettagli qui sul mio setup.
kostajh,

In effetti, ho dovuto ricorrere al riavvio di Emacs durante il passaggio. Per me ne vale ancora la pena.
Magnus,

2

Sto usando un setup molto simile a quello di Magnus, e volevo solo aggiungere quello (mu4e-quit)esistente, e funziona benissimo per ripulire gli account senza riavviare. Meccanismo reale:

(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))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.