Mu4e config
This commit is contained in:
parent
6b5cfe13b7
commit
bfd810a097
@ -853,7 +853,7 @@ by spaces.
|
|||||||
:message "you need to install the programs: pdflatex and imagemagick."
|
:message "you need to install the programs: pdflatex and imagemagick."
|
||||||
:image-input-type "pdf"
|
:image-input-type "pdf"
|
||||||
:image-output-type "png"
|
:image-output-type "png"
|
||||||
:image-size-adjust (0.4 . 0.4)
|
:image-size-adjust (1.0 . 1.0)
|
||||||
:latex-compiler ("pdflatex -interaction nonstopmode -output-directory %o %f")
|
:latex-compiler ("pdflatex -interaction nonstopmode -output-directory %o %f")
|
||||||
:image-converter ("convert -density %D -trim -antialias %f -quality 100 %O"))
|
:image-converter ("convert -density %D -trim -antialias %f -quality 100 %O"))
|
||||||
(dvipng
|
(dvipng
|
||||||
@ -2521,209 +2521,21 @@ Map Functions
|
|||||||
'append)
|
'append)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Mails With Mu4e
|
* Mu4e
|
||||||
:PROPERTIES:
|
** Ressources
|
||||||
:header-args:emacs-lisp+: :tangle no
|
Documentation:
|
||||||
:END:
|
- [ ] Mu4e documentation: http://www.djcbsoftware.nl/code/mu/mu4e/index.html#Top
|
||||||
- https://github.com/kzar/davemail
|
- [ ] https://github.com/djcb/mu
|
||||||
- http://cachestocaches.com/2017/3/complete-guide-email-emacs-using-mu-and-/
|
|
||||||
- http://spacemacs.org/layers/+email/mu4e/README.html
|
|
||||||
- http://www.djcbsoftware.nl/code/mu/mu4e/index.html#Top
|
|
||||||
- https://notanumber.io/2016-10-03/better-email-with-mu4e/
|
|
||||||
- https://vxlabs.com/2017/02/07/mu4e-0-9-18-e-mailing-with-emacs-now-even-better/
|
|
||||||
- http://www.brool.com/post/using-mu4e/
|
|
||||||
- https://www.reddit.com/r/emacs/comments/8q84dl/tip_how_to_easily_manage_your_emails_with_mu4e/
|
|
||||||
- https://vxlabs.com/2017/02/07/mu4e-0-9-18-e-mailing-with-emacs-now-even-better/
|
|
||||||
|
|
||||||
** Set default mail user agent to mu4e
|
Use contexts for multiple accounts:
|
||||||
#+begin_src emacs-lisp
|
- [ ] https://vxlabs.com/2017/02/07/mu4e-0-9-18-e-mailing-with-emacs-now-even-better/
|
||||||
(setq mail-user-agent 'mu4e-user-agent)
|
- [ ] http://cachestocaches.com/2017/3/complete-guide-email-emacs-using-mu-and-/
|
||||||
#+end_src
|
- [ ] https://notanumber.io/2016-10-03/better-email-with-mu4e/
|
||||||
|
|
||||||
|
Send math and source code:
|
||||||
|
- [ ] https://vxlabs.com/2015/01/28/sending-emails-with-math-and-source-code/
|
||||||
|
|
||||||
** Default config
|
** Cheatsheet
|
||||||
*** Default behavior
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq mu4e-maildir "~/.mail"
|
|
||||||
mu4e-update-interval nil
|
|
||||||
mu4e-compose-signature-auto-include t
|
|
||||||
mu4e-view-show-images t
|
|
||||||
mu4e-view-show-addresses t)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Default folders
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq mu4e-sent-folder "/gmail/Sent"
|
|
||||||
mu4e-drafts-folder "/gmail/Drafts"
|
|
||||||
mu4e-trash-folder "/gmail/Trash"
|
|
||||||
mu4e-refile-folder "/gmail/Archive"
|
|
||||||
mu4e-compose-signature "Thomas Dehaeze\n"
|
|
||||||
user-mail-address "dehaeze.thomas@gmail.com")
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Default signature and email address
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq mu4e-compose-signature "Thomas Dehaeze\n"
|
|
||||||
user-mail-address "dehaeze.thomas@gmail.com")
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Saving the attachment to Downloads directory
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq mu4e-attachment-dir "~/Downloads")
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** A list of user's e-mail addresses
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq mu4e-user-mail-address-list '("dehaeze.thomas@gmail.com" "thomas.dehaeze@esrf.fr" "thomas.dehaeze@doct.ulg.ac.be"))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Mail directory shortcuts
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq mu4e-maildir-shortcuts
|
|
||||||
'(
|
|
||||||
("/gmail/Inbox" . ?g)
|
|
||||||
("/esrf/Inbox" . ?e)
|
|
||||||
("/ulg/Inbox" . ?u)
|
|
||||||
))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** TODO Contexts - Email accounts
|
|
||||||
#+begin_src emacs-lisp :tangle no
|
|
||||||
(setq mu4e-contexts
|
|
||||||
`( ,(make-mu4e-context
|
|
||||||
:name "gmail"
|
|
||||||
:enter-func (lambda () (mu4e-message "Entering Gmail context"))
|
|
||||||
:leave-func (lambda () (mu4e-message "Leaving Gmail context"))
|
|
||||||
:match-func (lambda (msg)
|
|
||||||
(when msg
|
|
||||||
(string-match-p "^/gmail" (mu4e-message-field msg :maildir))))
|
|
||||||
:vars '(
|
|
||||||
(mu4e-sent-messages-behavior . (delete))
|
|
||||||
(user-mail-address . "dehaeze.thomas@gmail.com")
|
|
||||||
(mu4e-sent-folder . "/gmail/Sent")
|
|
||||||
(mu4e-trash-folder . "/gmail/Trash")
|
|
||||||
(mu4e-drafts-folder . "/gmail/Drafts")
|
|
||||||
(mu4e-refile-folder . "/gmail/Archive")
|
|
||||||
(mu4e-compose-signature .
|
|
||||||
(concat
|
|
||||||
"Thomas Dehaeze\n"
|
|
||||||
"\n"))
|
|
||||||
))
|
|
||||||
,(make-mu4e-context
|
|
||||||
:name "esrf"
|
|
||||||
:enter-func (lambda () (mu4e-message "Entering ESRF context"))
|
|
||||||
:leave-func (lambda () (mu4e-message "Leaving ESRF context"))
|
|
||||||
:match-func (lambda (msg)
|
|
||||||
(when msg
|
|
||||||
(string-match-p "^/esrf" (mu4e-message-field msg :maildir))))
|
|
||||||
:vars '(
|
|
||||||
(user-mail-address . "thomas.dehaeze@esrf.fr")
|
|
||||||
(mu4e-sent-folder . "/esrf/Sent")
|
|
||||||
(mu4e-trash-folder . "/esrf/Trash")
|
|
||||||
(mu4e-drafts-folder . "/esrf/Drafts")
|
|
||||||
(mu4e-refile-folder . "/esrf/Archive")
|
|
||||||
(mu4e-compose-signature .
|
|
||||||
(concat
|
|
||||||
"Thomas Dehaeze\n"
|
|
||||||
"\n"))
|
|
||||||
))
|
|
||||||
,(make-mu4e-context
|
|
||||||
:name "ulg"
|
|
||||||
:enter-func (lambda () (mu4e-message "Entering ULG context"))
|
|
||||||
:leave-func (lambda () (mu4e-message "Leaving ULG context"))
|
|
||||||
:match-func (lambda (msg)
|
|
||||||
(when msg
|
|
||||||
(string-match-p "^/ulg" (mu4e-message-field msg :maildir))))
|
|
||||||
:vars '(
|
|
||||||
(user-mail-address . "thomas.dehaeze@doct.ulg.ac.be")
|
|
||||||
(mu4e-sent-folder . "/ulg/Sent")
|
|
||||||
(mu4e-trash-folder . "/ulg/Trash")
|
|
||||||
(mu4e-drafts-folder . "/ulg/Drafts")
|
|
||||||
(mu4e-refile-folder . "/ulg/Archive")
|
|
||||||
(mu4e-compose-signature .
|
|
||||||
(concat
|
|
||||||
"Thomas Dehaeze\n"
|
|
||||||
"\n"))
|
|
||||||
))
|
|
||||||
))
|
|
||||||
(setq mu4e-context-policy 'pick-first)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Receiving emails - Mbsync
|
|
||||||
Let systemd get the mail, then pressing =U= will just run =mu= to reindex everything.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq mu4e-get-mail-command "true")
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Fix for mbsync found [[http://pragmaticemacs.com/emacs/fixing-duplicate-uid-errors-when-using-mbsync-and-mu4e/][here]].
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq mu4e-change-filenames-when-moving t)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Sending emails - Msmtp
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq smtpmail-default-smtp-server "smtp.gmail.com"
|
|
||||||
smtpmail-smtp-server "smtp.gmail.com"
|
|
||||||
smtpmail-smtp-service 587)
|
|
||||||
|
|
||||||
(setq message-send-mail-function 'message-send-mail-with-sendmail
|
|
||||||
sendmail-program "msmtp"
|
|
||||||
user-full-name "Thomas Dehaeze")
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Bookmarks
|
|
||||||
#+begin_src emacs-lisp :tangle no
|
|
||||||
(setq mu4e-bookmarks
|
|
||||||
`(("flag:unread AND NOT flag:trashed" "Unread messages" ?u)
|
|
||||||
("date:today..now" "Today's messages" ?t)
|
|
||||||
("date:7d..now" "Last 7 days" ?w)
|
|
||||||
("mime:image/*" "Messages with images" ?p)
|
|
||||||
(,(mapconcat 'identity
|
|
||||||
(mapcar
|
|
||||||
(lambda (maildir)
|
|
||||||
(concat "maildir:" (car maildir)))
|
|
||||||
mu4e-maildir-shortcuts) " OR ")
|
|
||||||
"All inboxes" ?i)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** TODO Notifications
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(with-eval-after-load 'mu4e-alert
|
|
||||||
(mu4e-alert-set-default-style 'libnotify))
|
|
||||||
(mu4e-alert-enable-notifications)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Mode-line notifications
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq mu4e-enable-mode-line t)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Use Org-Mode Tables In Emails
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(add-hook 'message-mode-hook 'turn-on-orgtbl)
|
|
||||||
(add-hook 'message-mode-hook 'turn-on-orgstruct++)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** TODO Integration with Org-Mode
|
|
||||||
Store link to message if in header view, not to header query
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq org-mu4e-link-query-in-headers-mode nil)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** TODO When putting something on the Trash, it will be in the archive folder on gmail
|
|
||||||
Even when totally deleting it. It will stay on gmail. How to fix that?
|
|
||||||
|
|
||||||
** TODO Verify that sending mails with gmail account works and that there is no duplicate
|
|
||||||
|
|
||||||
Should check this variable: mu4e-sent-messages-behavior
|
|
||||||
#+begin_src emacs-lisp :tangle no
|
|
||||||
(setq mu4e-sent-messages-behavior 'delete)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
And [[https://www.djcbsoftware.nl/code/mu/mu4e/Gmail-configuration.html][here]].
|
|
||||||
If I put it to delete, it works for gmail but not for the other ones...
|
|
||||||
Check [[https://github.com/djcb/mu/issues/179][here]].
|
|
||||||
|
|
||||||
** TODO Cheatsheet
|
|
||||||
| Command | Usage |
|
| Command | Usage |
|
||||||
|---------+-----------------------|
|
|---------+-----------------------|
|
||||||
| =C-j= | Next mail |
|
| =C-j= | Next mail |
|
||||||
@ -2732,6 +2544,175 @@ Check [[https://github.com/djcb/mu/issues/179][here]].
|
|||||||
| =t= | Move to Archive |
|
| =t= | Move to Archive |
|
||||||
| =d= | Move to Trash |
|
| =d= | Move to Trash |
|
||||||
|
|
||||||
|
** Helping function
|
||||||
|
This is a helper to help determine which account context I am in based on the folder in my maildir the email (eg. ~/.mail/nine27) is located in.
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(defun mu4e-message-maildir-matches (msg rx)
|
||||||
|
(when rx
|
||||||
|
(if (listp rx)
|
||||||
|
;; If rx is a list, try each one for a match
|
||||||
|
(or (mu4e-message-maildir-matches msg (car rx))
|
||||||
|
(mu4e-message-maildir-matches msg (cdr rx)))
|
||||||
|
;; Not a list, check rx
|
||||||
|
(string-match rx (mu4e-message-field msg :maildir)))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Choose account label to feed msmtp -a option based on From header in Message buffer; This function must be added to message-send-mail-hook for on-the-fly change of From address before sending message since message-send-mail-hook is processed right before sending message.
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(defun choose-msmtp-account ()
|
||||||
|
(if (message-mail-p)
|
||||||
|
(save-excursion
|
||||||
|
(let*
|
||||||
|
((from (save-restriction
|
||||||
|
(message-narrow-to-headers)
|
||||||
|
(message-fetch-field "from")))
|
||||||
|
(account
|
||||||
|
(cond
|
||||||
|
((string-match "dehaeze.thomas@gmail.com" from) "gmail")
|
||||||
|
((string-match "thomas.dehaeze@esrf.fr" from) "esrf"))))
|
||||||
|
(setq message-sendmail-extra-arguments (list '"-a" account))))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Basic Config
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package! mu4e
|
||||||
|
:config
|
||||||
|
(setq mail-user-agent 'mu4e-user-agent
|
||||||
|
mu4e-mu-binary "/usr/bin/mu"
|
||||||
|
mu4e-maildir "~/.mail"
|
||||||
|
mu4e-compose-format-flowed t
|
||||||
|
mu4e-compose-in-new-frame nil
|
||||||
|
mu4e-view-show-images t
|
||||||
|
mu4e-html2text-command "w3m -dump -T text/html"
|
||||||
|
mu4e-use-fancy-chars t
|
||||||
|
mu4e-headers-include-related t
|
||||||
|
mu4e-attachment-dir "~/Downloads"
|
||||||
|
message-kill-buffer-on-exit t
|
||||||
|
mu4e-compose-signature-auto-include t
|
||||||
|
mu4e-view-show-images t
|
||||||
|
mu4e-view-show-addresses t)
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Additional config
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package! mu4e
|
||||||
|
:config
|
||||||
|
;; Use imagemagick, if available.
|
||||||
|
(when (fboundp 'imagemagick-register-types)
|
||||||
|
(imagemagick-register-types))
|
||||||
|
|
||||||
|
;; Sometimes html email is just not readable in a text based client, this lets me open the
|
||||||
|
;; email in my browser.
|
||||||
|
(add-to-list 'mu4e-view-actions '("View in browser" . mu4e-action-view-in-browser) t)
|
||||||
|
|
||||||
|
;; Spell checking ftw.
|
||||||
|
(add-hook 'mu4e-compose-mode-hook 'flyspell-mode)
|
||||||
|
|
||||||
|
;; Use Helm to select mailboxes
|
||||||
|
(setq mu4e-completing-read-function 'completing-read)
|
||||||
|
;; Don't ask for a 'context' upon opening mu4e
|
||||||
|
(setq mu4e-context-policy 'pick-first)
|
||||||
|
;; Don't ask to quit... why is this the default?
|
||||||
|
(setq mu4e-confirm-quit nil)
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Provide Information
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package! mu4e
|
||||||
|
:config
|
||||||
|
(setq mu4e-user-mail-address-list '("dehaeze.thomas@gmail.com" "thomas.dehaeze@esrf.fr")
|
||||||
|
mu4e-compose-signature "Thomas Dehaeze\n"
|
||||||
|
user-mail-address "dehaeze.thomas@gmail.com")
|
||||||
|
;; Default Folders
|
||||||
|
(setq mu4e-sent-folder "/gmail/Sent"
|
||||||
|
mu4e-drafts-folder "/gmail/Drafts"
|
||||||
|
mu4e-trash-folder "/gmail/Trash"
|
||||||
|
mu4e-refile-folder "/gmail/Archive")
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Receiving emails using mbsync
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package! mu4e
|
||||||
|
:config
|
||||||
|
(setq mu4e-get-mail-command "~/scripts/checkmail.sh"
|
||||||
|
mu4e-update-interval nil
|
||||||
|
mu4e-change-filenames-when-moving t) ;; Fix for mbsync
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Contexts
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package! mu4e
|
||||||
|
:config
|
||||||
|
(setq mu4e-contexts
|
||||||
|
`( ,(make-mu4e-context
|
||||||
|
:name "gmail"
|
||||||
|
:enter-func (lambda () (mu4e-message "Switch to the gmail context"))
|
||||||
|
:match-func (lambda (msg) (when msg
|
||||||
|
(string-prefix-p "/gmail" (mu4e-message-field msg :maildir))))
|
||||||
|
:leave-func (lambda () (mu4e-clear-caches))
|
||||||
|
:vars '(
|
||||||
|
(user-mail-address . "dehaeze.thomas@gmail.com")
|
||||||
|
(user-full-name . "Thomas Dehaeze")
|
||||||
|
(mu4e-sent-folder . "/gmail/Sent")
|
||||||
|
(mu4e-trash-folder . "/gmail/Trash")
|
||||||
|
(mu4e-drafts-folder . "/gmail/Drafts")
|
||||||
|
(mu4e-refile-folder . "/gmail/Archive")
|
||||||
|
(mu4e-compose-signature . "Thomas Dehaeze\n")
|
||||||
|
))
|
||||||
|
,(make-mu4e-context
|
||||||
|
:name "esrf"
|
||||||
|
:enter-func (lambda () (mu4e-message "Switch to the esrf context"))
|
||||||
|
:match-func (lambda (msg) (when msg
|
||||||
|
(string-prefix-p "/esrf" (mu4e-message-field msg :maildir))))
|
||||||
|
:leave-func (lambda () (mu4e-clear-caches))
|
||||||
|
:vars '(
|
||||||
|
(user-mail-address . "thomas.dehaeze@esrf.fr")
|
||||||
|
(user-full-name . "Thomas Dehaeze")
|
||||||
|
(mu4e-sent-folder . "/esrf/Sent")
|
||||||
|
(mu4e-trash-folder . "/esrf/Trash")
|
||||||
|
(mu4e-drafts-folder . "/esrf/Drafts")
|
||||||
|
(mu4e-refile-folder . "/esrf/Archive")
|
||||||
|
(mu4e-compose-signature . "Thomas Dehaeze\n")
|
||||||
|
))
|
||||||
|
))
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Sending mails
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package! mu4e
|
||||||
|
:config
|
||||||
|
(setq message-send-mail-function 'message-send-mail-with-sendmail
|
||||||
|
sendmail-program "/usr/bin/msmtp"
|
||||||
|
user-full-name "Thomas Dehaeze")
|
||||||
|
|
||||||
|
;; This prevents saving the email to the Sent folder since gmail will do this for us on their end.
|
||||||
|
(setq mu4e-sent-messages-behavior 'delete)
|
||||||
|
|
||||||
|
;; Use the correct account context when sending mail based on the from header.
|
||||||
|
(setq message-sendmail-envelope-from 'header)
|
||||||
|
(add-hook 'message-send-mail-hook 'choose-msmtp-account)
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Bookmarks
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package! mu4e
|
||||||
|
:config
|
||||||
|
(setq mu4e-bookmarks `(,(make-mu4e-bookmark
|
||||||
|
:name "All Inboxes"
|
||||||
|
:query "maildir:/gmail/Inbox OR maildir:/esrf/Inbox"
|
||||||
|
:key ?i)
|
||||||
|
("flag:unread" "Unread messages" ?u)
|
||||||
|
("date:today..now" "Today's messages" ?t)
|
||||||
|
("date:7d..now" "Last 7 days" ?w)))
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* PDF-Tools
|
* PDF-Tools
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package! pdf-tools
|
(use-package! pdf-tools
|
||||||
@ -2894,7 +2875,7 @@ they are implemented.
|
|||||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||||
|
|
||||||
:email
|
:email
|
||||||
;;(mu4e +gmail)
|
(mu4e +gmail)
|
||||||
|
|
||||||
:app
|
:app
|
||||||
calendar
|
calendar
|
||||||
|
Loading…
Reference in New Issue
Block a user