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.

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

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.


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

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))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.