mu4e - mehrere Konten

22

Ich verwende mu4efür E-Mails in Emacs, und es ist derzeit nur für ein E-Mail-Konto konfiguriert, und ich lege den Schlüssel fest, um einen anderen Posteingang anzuzeigen. Ich frage mich, wie ich mu4e zum Verwalten mehrerer E-Mail-Konten verwenden kann.

yi.tang.uni
quelle

Antworten:

17

Ich benutze mu4e mit zwei Accounts. Jeder Account hat ein eigenes Maildir:

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

Das Handbuch enthält eine Beispielfunktion zur Auswahl eines Kontos:

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

Damit das funktioniert, benötigen Sie außerdem Folgendes 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))

Sie können einfach mit zwischen Mailordnern wechseln j, solange alle Ihre Maildirs Unterverzeichnisse von sind mu4e-maildir.

Ich verwende eigentlich eine aufwendigere Funktion mu4e-trash-folderund mu4e-refile-folderzur Vermeidung von E - Mails von einem maildir über in einer anderen, aber die Informationen oben sollten ausreichend sein , mehrere Konten zu verwenden.

rekado
quelle
Ich habe Probleme zu verstehen, wie mu4e weiß, welcher Posteingang angezeigt werden soll. Es gibt keine mu4e-inbox-folderVariable, und wenn ich drücke, jierhalte ich eingehende E-Mails von allen meinen Konten, nicht nur vom geschäftlichen oder privaten Kontext.
AstroFloyd
6

Ich benutze zwei verschiedene Accounts, die ich so wenig wie möglich mischen möchte.

offlineimap ist mit zwei Konten konfiguriert, von denen eines E-Mails an ~/.maildir-workdas andere übermittelt~/.maildir-home .

Meine Konfiguration für mu4e verwendet den neuen Kontextmechanismus:

(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
quelle
Ich habe Probleme, dieses Beispiel zum Laufen zu bringen. Pro der Dokumentation des mu4e-maildirund mu4e-mu-homesollte Variablen nicht zuerst ohne Aufhören mu4e veränderbar sein. Ich gab ein bisschen mehr Detail hier auf meinem Set up.
Kostajh
Tatsächlich musste ich beim Umstieg auf einen Neustart von Emacs zurückgreifen. Für mich ist das immer noch wert.
Magnus
2

Ich verwende ein Setup, das Magnus sehr ähnlich ist, und wollte nur hinzufügen, dass es (mu4e-quit)existiert. Es funktioniert einwandfrei, um Konten ohne Neustart zu bereinigen. Tatsächlicher Mechanismus:

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