emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Matt Price <moptop99@gmail.com>
To: Alan Schmitt <alan.schmitt@polytechnique.org>
Cc: "Emacs-orgmode@gnu.org" <emacs-orgmode@gnu.org>,
	John Kitchin <jkitchin@andrew.cmu.edu>
Subject: Re: html-email in org-mode
Date: Fri, 4 Nov 2016 20:13:03 -0400	[thread overview]
Message-ID: <CAN_Dec_SEg04JPu-T3=dhoA2WjEkmnRM2UMeL35+b447hBC5Ng@mail.gmail.com> (raw)
In-Reply-To: <m2r36v0zqf.fsf@polytechnique.org>


[-- Attachment #1.1: Type: text/plain, Size: 1013 bytes --]

John, I'm moving this over to this thread because I think my issues with
htmlize-and-send might not be because of any errors in my setup.

When I use John's htmlize-and-send, or any similar function, to attempt to
send an html email from org-mode, I get an error from message-send:
"Message already sent via mail; resend?" Attmepting to resend fails
silently, and the message is neither sent nor saved to archives.
Interestingly, the first time I try this in a new emacs session, I get no
error message ( though the message doesn't actually get sent). This makes
me wonder if there's something wrong with the way
mu4e/message/htmlize-and-send is keeping track of messages.

I've attached the minimal mail-test.el that I use to start emacs; I'm using
a pretty recent emacs-git with the latest org-mode git, on Arch Linux, with
offlineimap and nullmailer (which has a sendmail clone). If anyone out
there has a moment to look at my config and tell me if they see anything
wrong... I'd aprreciate it. Th
anks,

Matt

[-- Attachment #1.2: Type: text/html, Size: 1247 bytes --]

[-- Attachment #2: mail-test.el --]
[-- Type: text/x-emacs-lisp, Size: 10587 bytes --]

;; example configuration for mu4e
(add-to-list 'load-path "/home/matt/src/mu/mu4e/" )
(add-to-list 'load-path "/home/matt/src/org-mode/lisp/" )
(add-to-list 'load-path "/home/matt/src/org-mode/contrib/lisp/" )

;; make sure mu4e is in your load-path
(require 'mu4e)
(require 'org)
(require 'org-mime)


;; Only needed if your maildir is _not_ ~/Maildir
;; Must be a real dir, not a symlink
(setq mu4e-maildir "/home/matt/UofTMail/")

;; these must start with a "/", and must exist
;; (i.e.. /home/user/Maildir/sent must exist)
;; you use e.g. 'mu mkdir' to make the Maildirs if they don't
;; already exist

;; below are the defaults; if they do not exist yet, mu4e offers to
;; create them. they can also functions; see their docstrings.
(setq mu4e-sent-folder   "/Sent")
(setq mu4e-drafts-folder "/Drafts")
(setq mu4e-trash-folder  "/Trash")
(setq mu4e-refile-folder  "/Archives")

;; smtp mail setting; these are the same that `gnus' uses.
(setq
 ;;message-send-mail-function   'smtpmail-send-it
 smtpmail-default-smtp-server "smtp.utoronto.ca"
 smtpmail-smtp-server         "smtp.utoronto.ca"
 smtpmail-local-domain        "utoronto.ca")


;; use msmtp instead of sendmail!
;; actually we're using nullmailer now. Both are great, but nullmailer send is subjetively instantaneous
(setq message-send-mail-function 'message-send-mail-with-sendmail)
;; instead of sending directly with msmtp, sned with the enqueue script
;;(setq sendmail-program "/usr/local/bin/msmtp-enqueue.sh")
(setq sendmail-program "/usr/bin/sendmail")
;;(setq sendmail-program "/usr/bin/msmtp")

      ;;; This line allows you to store a quick link to the relevant email in a TODO item.
      ;;; thank you, Pragmatic Emacs: http://pragmaticemacs.com/emacs/master-your-inbox-with-mu4e-and-org-mode/
;;store org-mode links to messages
(require 'org-mu4e)
;;store link to message if in header view, not to header query
(setq org-mu4e-link-query-in-headers-mode nil)



;; the maildirs you use frequently; access them with 'j' ('jump')
(setq   mu4e-maildir-shortcuts
        '(("/inbox"       . ?i)
          ("/Archives"     . ?a)
          ("/Sent"        . ?s)))

;; a  list of user's e-mail addresses
(setq mu4e-user-mail-address-list '("matt.price@utoronto.ca" "moptop99@gmail.com"))

;; when you want to use some external command for text->html
;; conversion, e.g. the 'html2text' program
;; (setq mu4e-html2text-command "html2text")
;; commenting out for testing
;; (require 'mu4e-contrib)
;; (setq mu4e-html2text-command 'mu4e-shr2text)
;; (add-hook 'mu4e-view-mode-hook
;;           (lambda()
;;             ;; try to emulate some of the eww key-bindings
;;             (local-set-key (kbd "<tab>") 'shr-next-link)
;;             (local-set-key (kbd "<backtab>") 'shr-previous-link)))


;; the headers to show in the headers list -- a pair of a field
;; and its width, with `nil' meaning 'unlimited'
;; (better only use that for the last field.

;; commenting out for testing
;; These are the defaults:
;; (setq mu4e-headers-fields
;;       '( (:human-date          .  25)    ;; alternatively, use :human-date
;;          (:flags         .   6)
;;          (:mailing-list         .   10)
;;          ;;(:attachments   .   6)
;;          (:from-or-to          .  22)
;;          (:subject       .  nil))) ;; alternatively, use :thread-subject

;; program to get mail; alternatives are 'fetchmail', 'getmail'
;; isync or your own shellscript. called when 'U' is pressed in
;; main view.

;; If you get your mail without an explicit command,
;; use "true" for the command (this is the default)
(setq mu4e-get-mail-command "offlineimap")

;; general emacs mail settings; used when composing e-mail
;; the non-mu4e-* stuff is inherited from emacs/message-mode
(setq mu4e-reply-to-address "matt.price@utoronto.ca"
      user-mail-address "matt.price@utoronto.ca"
      user-full-name  "Matt Price")
(setq mu4e-compose-signature
      "")

;; smtp mail setting
;; I don't think this is being used by nullmailer at all, so probably irrelefant for me.
;; (setq

;;  ;; if you need offline mode, set these -- and create the queue dir
;;  ;; with 'mu mkdir', i.e.. mu mkdir /home/user/Maildir/queue
;;  smtpmail-queue-mail  nil
;;  smtpmail-queue-dir  "/home/matt/UofTMail/queue/cur")

;; don't keep message buffers around
;; commenting out in case this is an issue.  
;;(setq message-kill-buffer-on-exit t)

;; commenting out for troubleshooting.
;; split horizontally, which is how I like it
;; actually, switch to vertical (which is bizarrely called horizontal)
;; can't seem to get it to switch, so we'll see how it goes.
;; (setq ;; mu4e-split-view 'horizontal
;;  mu4e-headers-visible-lines 15
;;  mu4e-headers-visible-columns 80)

;; view images inline
;; enable inline images
;; (setq mu4e-view-show-images t)
;; ;; use imagemagick, if available
;; (when (fboundp 'imagemagick-register-types)
;;   (imagemagick-register-types))

;; extract attachments
;; consider doing some sorting, e.g.: http://www.djcbsoftware.nl/code/mu/mu4e/Attachments.html#Attachments
(setq mu4e-attachment-dir  "~/Downloads")
(setq mu4e-attachment-dir
      (lambda (fname mtype)
        (cond
         ;; jpgs go to ~/Pictures/FromEmails
         ((and fname (string-match "\\.jpg$" fname))  "~/Pictures/FromEmails")
         ;; ... other cases  ...
         (t "~/Downloads")))) ;; everything else
;; 

;; This is a rewrite if mu4e-main from [[https://github.com/zmalltalker/dot-emacs/blob/master/contrib/mu4e/mu4e-main.el]]

;; (eval-after-load 'mu4e 
;;   '(define-key mu4e-main-mode-map "m" 'mu4e-main-toggle-mail-sending-mode))
;; (eval-after-load 'mu4e 
;;   '(define-key mu4e-main-mode-map "f" 'smtpmail-send-queued-mail))


;; comment out all my new keybindings
;; (defun my-mu4e-main-mode-config ()
;;   "For use in `mu4e-main-mode-hook'."
;;   (local-set-key (kbd "m") 'mu4e-main-toggle-mail-sending-mode) ; add a key
;;   (local-set-key (kbd "f") 'smtpmail-send-queued-mail) ; add a key
;;   ;;(local-set-key (kbd "C-c C-p") nil) ; example of remove a key
;;   ;; more here
;;   )

;; (defun my-mu4e-headers-mode-config ()
;;   "For use in 'mu4e-view-mode-hook'."
;;   (local-set-key (kbd "a") 'mu4e-headers-mark-for-refile) ;; remap from "r"
;;   (local-set-key (kbd "r") 'mu4e-compose-reply) ;; add new keymapping, along with "R"
;;   (local-set-key (kbd "C-c C-v") 'mu4e-headers-action) ;; rebind from a
;;   )

;; (defun my-mu4e-view-mode-config ()
;;   "For use in 'mu4e-view-mode-hook'."
;;   (local-set-key (kbd "a") 'mu4e-view-mark-for-refile) ;; remap from "r"
;;   (local-set-key (kbd "r") 'mu4e-compose-reply) ;; add new keymapping, along with "R"
;;   (local-set-key (kbd "C-c C-v") 'mu4e-view-action) ;; rebind from a
;;   (visual-line-mode)
;;   )



;; (define-key mu4e-headers-mode-map (kbd "C-c c") 'org-mu4e-store-and-capture)
;; (define-key mu4e-view-mode-map    (kbd "C-c c") 'org-mu4e-store-and-capture)
;; (define-key mu4e-headers-mode-map "x" #'my-mu4e-mark-execute-all-no-confirm)  ;; turn off execution ocnfirmation

;; ;; add to hook
;; (add-hook 'mu4e-main-mode-hook 'my-mu4e-main-mode-config)
;; (add-hook 'mu4e-headers-mode-hook 'my-mu4e-headers-mode-config)
;; (add-hook 'mu4e-view-mode-hook 'my-mu4e-view-mode-config)


;; configure view actions
(add-to-list 'mu4e-view-actions
             '("ViewInBrowser" . mu4e-action-view-in-browser) t)

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Interactive functions

;; (defun my-mu4e-mark-execute-all-no-confirm ()
;;   "Execute all marks without confirmation."
;;   (interactive)
;;   (mu4e-mark-execute-all 'no-confirm))

;; this seemed essential at first but now I'm not using the mstpmail queue
;; (defun mu4e-main-toggle-mail-sending-mode ()
;;   "Toggle sending mail mode, either queued or direct."
;;   (interactive)
;;   (unless (file-directory-p smtpmail-queue-dir)
;;     (mu4e-error "`smtpmail-queue-dir' does not exist"))
;;   (setq smtpmail-queue-mail (not smtpmail-queue-mail))
;;   (message
;;    (concat "Outgoing mail will now be "
;;            (if smtpmail-queue-mail "queued" "sent directly")))
;;   (mu4e~main-view))



;; use flowed text in ocmpose mode os your emails don't look awful
;; tip submitted by mu4e user cpbotha (from manual, appendix)
;; unfortunatley this seems to interfere with John Kitchin;sstuff. Disabling for now,
;; will submit report
;; (add-hook 'mu4e-compose-mode-hook
;;           (defun cpb-compose-setup ()
;;             "Outgoing mails get format=flowed."
;;             (use-hard-newlines t 'guess)))

;; this might be overlapping with the below...
;; in fact it almost certainly is
;; (add-hook 'mu4e-compose-mode-hook
;;           (defun do-compose-stuff ()
;;   "My settings for message composition."
;;             (org-mu4e-compose-org-mode)))


;;  make use of org-mode in ocmposition mode, and show html versions by defaul...
;; I think there might be a conflict with org-mu4e-convert-to-html t
;; Since I seem to have discovered the problem elsewhere, I'll consider changing this back
;; soon. 
;; (setq ;; org-mu4e-convert-to-html t
;;  mu4e-view-prefer-html  t)


;; john kitchin's trick to check for attachments:
;; http://kitchingroup.cheme.cmu.edu/blog/category/email/



(defun org-mime-org-buffer-htmlize ()
  "Create an email buffer containing the current org-mode file
  exported to html and encoded in both html and in org formats as
  mime alternatives."
  (interactive)
  (org-mime-send-buffer 'html)
  (message-goto-to))

(defun org-mime-subtree ()
  "Create an email buffer containing the current org-mode subtree
  exported to a org format or to the format specified by the
  MAIL_FMT property of the subtree."
  (interactive)
  (org-mime-send-subtree
   (or (org-entry-get nil "MAIL_FMT" org-mime-use-property-inheritance) 'org))
  (message-goto-to))

(defun mu4e-compose-org-mail ()
  (interactive)
  (mu4e-compose-new)
  (org-mu4e-compose-org-mode))

(defun htmlize-and-send ()
  "When in an org-mu4e-compose-org-mode message, htmlize and send it."
  (interactive)
  ;;(message "hello")
  (when (member 'org~mu4e-mime-switch-headers-or-body post-command-hook)
    (goto-char (point-min))
    (org-mime-htmlize)
    (message-send-and-exit)))

(add-hook 'org-ctrl-c-ctrl-c-hook 'htmlize-and-send t)

(defun mwp-send-from-org ()
  "when in org-mu4e-compose-org-mode message, just send it b/c htmlize has already been hooke in"
  (interactive)
  (when (member 'org~mu4e-mime-switch-headers-or-body post-command-hook)
    (goto-char (point-min))
    (message-send-and-exit)))

;;(add-hook 'org-ctrl-c-ctrl-c-hook 'mwp-send-from-org t)


  reply	other threads:[~2016-11-05  0:13 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-29 18:37 html-email in org-mode John Kitchin
2016-10-30 14:34 ` Eric Brown
2016-10-30 15:09   ` Marcin Borkowski
2016-10-30 21:45   ` John Kitchin
2016-11-01 11:58     ` Eric Brown
2016-11-01 19:25 ` Alan Schmitt
2016-11-05  0:13   ` Matt Price [this message]
2016-11-07  2:55     ` John Kitchin
2016-11-07 15:37 ` Joseph Vidal-Rosset
  -- strict thread matches above, loose matches on Subject: below --
2016-10-30 15:44 tbanelwebmin
2016-11-01 16:10 (no subject) John Kitchin
2016-11-06  0:27 ` html-email in org-mode Eric Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAN_Dec_SEg04JPu-T3=dhoA2WjEkmnRM2UMeL35+b447hBC5Ng@mail.gmail.com' \
    --to=moptop99@gmail.com \
    --cc=alan.schmitt@polytechnique.org \
    --cc=emacs-orgmode@gnu.org \
    --cc=jkitchin@andrew.cmu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).