mu4e - banyak akun

22

Saya menggunakan mu4eemail di Emacs, dan saat ini hanya dikonfigurasi untuk satu akun email, dan saya mengatur kunci untuk melihat kotak masuk yang berbeda. Saya bertanya-tanya bagaimana cara menggunakan mu4e untuk mengelola beberapa akun email?

yi.tang.uni
sumber

Jawaban:

17

Saya menggunakan mu4e dengan dua akun. Setiap akun memiliki maildir sendiri:

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

Manual ini dilengkapi dengan fungsi contoh untuk memilih akun:

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

Agar itu berfungsi, Anda juga akan memerlukan 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))

Anda dapat dengan mudah beralih di antara folder surat j, selama semua maildir Anda adalah subdirektori dari mu4e-maildir.

Saya sebenarnya menggunakan fungsi yang lebih rumit untuk mu4e-trash-folderdan mu4e-refile-foldermenghindari memindahkan email dari satu maildir ke yang lain, tetapi informasi di atas harus memadai untuk menggunakan beberapa akun.

rekado
sumber
Saya berjuang untuk memahami bagaimana mu4e tahu kotak masuk mana yang harus ditampilkan. Tidak ada mu4e-inbox-foldervariabel, dan ketika saya menekan jisaya mendapat email masuk dari semua akun saya, bukan hanya konteks pekerjaan atau pribadi.
AstroFloyd
6

Saya menggunakan dua akun berbeda yang ingin saya campur sesedikit mungkin.

offlineimap dikonfigurasikan dengan dua akun, satu mengirimkan email ke ~/.maildir-workyang lain ke ~/.maildir-home.

Konfigurasi saya untuk mu4e menggunakan mekanisme konteks baru:

(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
sumber
Saya kesulitan membuat contoh ini berfungsi. Per dokumentasi yang mu4e-maildirdan mu4e-mu-homevariabel tidak seharusnya berubah tanpa berhenti mu4e pertama. Saya memposting sedikit lebih detail di sini di set up saya.
kostajh
Memang, saya harus resor untuk memulai kembali Emacs ketika beralih. Bagi saya itu masih layak.
Magnus
2

Saya menggunakan pengaturan yang sangat mirip dengan Magnus, dan hanya ingin menambahkan yang (mu4e-quit)ada, dan berfungsi baik untuk membersihkan akun tanpa memulai ulang. Mekanisme aktual:

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