Mercurial > emacs
changeset 12446:92440abe8409
(sendmail-send-it): If user-full-name contains
special characters, quote or escape them for the From: line.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 30 Jun 1995 17:31:31 +0000 |
parents | 74e5ebf071fb |
children | 240de864f06c |
files | lisp/mail/sendmail.el |
diffstat | 1 files changed, 24 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/mail/sendmail.el Fri Jun 30 10:38:19 1995 +0000 +++ b/lisp/mail/sendmail.el Fri Jun 30 17:31:31 1995 +0000 @@ -519,9 +519,31 @@ (let* ((login (user-login-name)) (fullname (user-full-name))) (cond ((eq mail-from-style 'angles) - (insert "From: " fullname " <" login ">\n")) + (insert "From: " fullname) + (let ((fullname-start (+ (point-min) 6)) + (fullname-end (point-marker))) + (goto-char fullname-start) + ;; Look for a character that cannot appear unquoted + ;; according to RFC 822. + (if (re-search-forward "[^- !#-'*+/-9=?A-Z^-~]" + fullname-end 1) + (progn + ;; Quote fullname, escaping specials. + (goto-char fullname-start) + (insert "\"") + (while (re-search-forward "[\"\\]" + fullname-end 1) + (replace-match "\\\\\\&" t)) + (insert "\"")))) + (insert " <" login ">\n")) ((eq mail-from-style 'parens) - (insert "From: " login " (" fullname ")\n")) + (insert "From: " login " (" fullname) + (let ((fullname-end (point-marker))) + (backward-char (length fullname)) + ;; RFC 822 says ()\ must be escaped in comments. + (while (re-search-forward "[()\\]" fullname-end 1) + (replace-match "\\\\\\&" t))) + (insert ")\n")) ((null mail-from-style) (insert "From: " login "\n"))))) ;; Insert an extra newline if we need it to work around