diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7806877c6f5..04bc29bf1b0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,21 @@ +2011-09-09 Eli Zaretskii + + Fix for Savannah bug#9392. + * simple.el (mail-encode-mml): New defvar. + + * mail/rmail.el (mail-encode-mml): Add a defvar. + (rmail-enable-mime-composing): Default to t. + (rmail-forward): Use MIME method of forwarding only if both + rmail-enable-mime-composing and rmail-enable-mime are non-nil. + Set mail-encode-mml non-nil if the MIME method was used. + + * mail/sendmail.el (mml-to-mime): Add autoload form. + (mail-encode-mml): Add a defvar. + (mail-mode): Make mail-encode-mml buffer-local and initialize it + to nil. + (mail-send): If mail-encode-mml is non-nil, run the outgoing + message through mml-to-mime, and reset mail-encode-mml to nil. + 2011-09-09 Glenn Morris * woman.el (woman-if-body): When processing an .el block, diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index ac07f07a76b..db06de9be76 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -91,6 +91,7 @@ its character representation and its display representation.") (defvar messages-head) (defvar total-messages) (defvar tool-bar-map) +(defvar mail-encode-mml) (defvar rmail-header-style 'normal "The current header display style choice, one of @@ -642,7 +643,7 @@ unless the feature specified by `rmail-mime-feature' is available." :version "23.3" :group 'rmail) -(defvar rmail-enable-mime-composing nil +(defvar rmail-enable-mime-composing t "*If non-nil, RMAIL uses `rmail-insert-mime-forwarded-message-function' to forward.") ;; FIXME unused. @@ -3794,9 +3795,17 @@ see the documentation of `rmail-resend'." ;; Insert after header separator--before signature if any. (rfc822-goto-eoh) (forward-line 1) - (if (or rmail-enable-mime rmail-enable-mime-composing) - (funcall rmail-insert-mime-forwarded-message-function - forward-buffer) + (if (and rmail-enable-mime rmail-enable-mime-composing) + (prog1 + (funcall rmail-insert-mime-forwarded-message-function + forward-buffer) + ;; rmail-insert-mime-forwarded-message-function + ;; works by inserting MML tags into forward-buffer. + ;; The MUA will need to convert it to MIME before + ;; sending. mail-encode-mml tells them to do that. + ;; message.el does that automagically. + (or (eq mail-user-agent 'message-user-agent) + (setq mail-encode-mml t))) (insert "------- Start of forwarded message -------\n") ;; Quote lines with `- ' if they start with `-'. (let ((beg (point)) end) diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el index cb02a4b374d..f7dc01e8ebf 100644 --- a/lisp/mail/sendmail.el +++ b/lisp/mail/sendmail.el @@ -31,6 +31,9 @@ (require 'rfc2047) +(autoload 'mml-to-mime "mml" + "Translate the current buffer from MML to MIME.") + (defgroup sendmail nil "Mail sending commands for Emacs." :prefix "mail-" @@ -678,6 +681,7 @@ switching to, the `*mail*' buffer. See also `mail-setup-hook'." :options '(footnote-mode)) (defvar mail-mode-abbrev-table text-mode-abbrev-table) +(defvar mail-encode-mml) ;;;###autoload (define-derived-mode mail-mode text-mode "Mail" "Major mode for editing mail to be sent. @@ -701,6 +705,8 @@ Turning on Mail mode runs the normal hooks `text-mode-hook' and (make-local-variable 'mail-reply-action) (make-local-variable 'mail-send-actions) (make-local-variable 'mail-return-action) + (make-local-variable 'mail-encode-mml) + (setq mail-encode-mml nil) (setq buffer-offer-save t) (make-local-variable 'font-lock-defaults) (setq font-lock-defaults '(mail-font-lock-keywords t t)) @@ -934,6 +940,9 @@ the user from the mailer." (error "Invalid header line (maybe a continuation line lacks initial whitespace)")) (forward-line 1))) (goto-char opoint) + (when mail-encode-mml + (mml-to-mime) + (setq mail-encode-mml nil)) (run-hooks 'mail-send-hook) (message "Sending...") (funcall send-mail-function) diff --git a/lisp/simple.el b/lisp/simple.el index 2d4f883f1ed..5b639f774cb 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -5729,6 +5729,11 @@ else the end of the last line. This function obeys RFC822." "^\\([:\n]\\|[^: \t\n]+[ \t\n]\\)" nil 'move) (goto-char (match-beginning 0)))) +;; Used by Rmail (e.g., rmail-forward). +(defvar mail-encode-mml nil + "If non-nil, mail-user-agent's `sendfunc' command should mml-encode +the outgoing message before sending it.") + (defun compose-mail (&optional to subject other-headers continue switch-function yank-action send-actions return-action)