;;; ravi-init-mu.el --- mail ;; Copyright (C) 2014 ;; Author: ;; Keywords: ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Set up mu4e conditionally ;; - actual account information should be in local.el ;; - requires definitions of ravi/mu4e-account-alist ;;; Code: (when ravi/use-mu-for-email (use-package mu4e :load-path ,(ravi/emacs-file "site-lisp/mu/mu4e") :commands mu4e :init (progn (unless ravi/mu4e-account-alist (error "Email account list not found"))) :config (progn ;; Basic identity for sending mail (require 'smtpmail) (setq send-mail-function 'smtpmail-send-it) (setq message-send-mail-function 'smtpmail-send-it) ;; Set up defaults from first account on the list ;; user-full-name ;; smtp-local-domain ;; user-mail-address ;; smtpmail-smtp-user ;; smtpmail-smtp-server ;; mu4e-sent-folder ;; mu4e-trash-folder ;; mu4e-refile-folder (let* ((account (caar ravi/mu4e-account-alist)) (account-vars (cdr (assoc account ravi/mu4e-account-alist)))) (if account-vars (mapc #'(lambda (var) (set (car var) (cadr var))) account-vars) (error "No email account found"))) ;; Choose correct SMTP identity wisely (defun ravi/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)) (if (= (length ravi/mu4e-account-alist) 1) (caar ravi/mu4e-account-alist) (completing-read (format "Compose with account: (%s) " (mapconcat #'(lambda (var) (car var)) ravi/mu4e-account-alist "/")) (mapcar #'(lambda (var) (car var)) ravi/mu4e-account-alist) nil t nil nil (caar ravi/mu4e-account-alist))))) (account-vars (cdr (assoc account ravi/mu4e-account-alist)))) (if account-vars (mapc #'(lambda (var) (set (car var) (cadr var))) account-vars) (error "No email account found")))) (add-hook 'mu4e-compose-pre-hook 'ravi/mu4e-set-account) ;; Use async method of sending email, if possible (use-package async :config (progn (require 'smtpmail-async) (setq send-mail-function 'async-smtpmail-send-it) (setq message-send-mail-function 'async-smtpmail-send-it) ) :ensure t ) ;; Basic mu4e configuration parameters (setq mu4e-mu-binary (ravi/emacs-file "site-lisp/mu/mu/mu")) (setq mu4e-maildir "~/.mail") ;; Currently, poll all accounts all the time == to do: fix mail intervals per account (setq mu4e-get-mail-command (concat (ravi/emacs-file "site-lisp/isync/src/mbsync") " -a -q -q")) (if (boundp 'ravi/mu4e-update-interval) (setq mu4e-update-interval ravi/mu4e-update-interval) (setq mu4e-update-interval 1800)) ; pull every 30 minutes ;; User interface (setq mu4e-html-renderer 'w3m) (setq mu4e-html2text-command "w3m -T text/html") (setq mu4e-view-show-images t) (when (boundp 'ravi/mu4e-maildir-shortcuts) (setq mu4e-maildir-shortcuts ravi/mu4e-maildir-shortcuts)) (add-to-list 'mu4e-view-actions '("ViewInBrowser" . mu4e-action-view-in-browser) t) ;; Show summary of all folders (use-package mu4e-maildirs-extension ;;:config (mu4e-maildirs-extension) ; does not work with mu now :ensure t ) ;; Allow attaching files from dired (require 'gnus-dired) ;; make the `gnus-dired-mail-buffers' function also work on ;; message-mode derived modes, such as mu4e-compose-mode (defun gnus-dired-mail-buffers () "Return a list of active message buffers." (let (buffers) (save-current-buffer (dolist (buffer (buffer-list t)) (set-buffer buffer) (when (and (derived-mode-p 'message-mode) (null message-sent-message-via)) (push (buffer-name buffer) buffers)))) (nreverse buffers))) (setq gnus-dired-mail-mode 'mu4e-user-agent) (add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode) (add-to-list 'smart-tab-disabled-major-modes 'mu4e-compose-mode) (imagemagick-register-types) (add-to-list 'Info-default-directory-list (ravi/emacs-file "site-lisp/mu/mu4e")) ) ) ) (provide 'ravi-init-mu) ;;; ravi-init-mu.el ends here