X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/66610f4a1de92f9177cf683155a21f0677523bf0..af8933de25fda0be467055eaf83611acfce27c0b:/smtpmail-async.el diff --git a/smtpmail-async.el b/smtpmail-async.el index 2844071ec..6fcf287f4 100644 --- a/smtpmail-async.el +++ b/smtpmail-async.el @@ -1,10 +1,10 @@ -;;; smtpmail-async --- Send e-mail with smtpmail.el asynchronously +;;; smtpmail-async.el --- Send e-mail with smtpmail.el asynchronously -*- lexical-binding: t -*- -;; Copyright (C) 2012 John Wiegley +;; Copyright (C) 2012-2016 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Created: 18 Jun 2012 -;; Version: 1.0 + ;; Keywords: email async ;; X-URL: https://github.com/jwiegley/emacs-async @@ -34,26 +34,39 @@ ;; ;; This assumes you already have smtpmail.el working. +;;; Code: + (defgroup smtpmail-async nil "Send e-mail with smtpmail.el asynchronously" :group 'smptmail) (require 'async) (require 'smtpmail) +(require 'message) + +(defvar async-smtpmail-before-send-hook nil + "Hook running in the child emacs in `async-smtpmail-send-it'. +It is called just before calling `smtpmail-send-it'.") (defun async-smtpmail-send-it () - (let ((to (message-field-value "To"))) + (let ((to (message-field-value "To")) + (buf-content (buffer-substring-no-properties + (point-min) (point-max)))) (message "Delivering message to %s..." to) (async-start `(lambda () (require 'smtpmail) (with-temp-buffer - (insert ,(buffer-substring-no-properties (point-min) (point-max))) + (insert ,buf-content) + (set-buffer-multibyte nil) ;; Pass in the variable environment for smtpmail - ,(async-inject-variables "\\`\\(smtpmail\\|\\(user-\\)?mail\\)-") + ,(async-inject-variables + "\\`\\(smtpmail\\|async-smtpmail\\|\\(user-\\)?mail\\)-\\|auth-sources\\|epg" + nil "\\`\\(mail-header-format-function\\|smtpmail-address-buffer\\|mail-mode-abbrev-table\\)") + (run-hooks 'async-smtpmail-before-send-hook) (smtpmail-send-it))) - `(lambda (&optional ignore) - (message "Delivering message to %s...done" ,to))))) + (lambda (&optional _ignore) + (message "Delivering message to %s...done" to))))) (provide 'smtpmail-async)