⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendmail.el

📁 早期freebsd实现
💻 EL
📖 第 1 页 / 共 2 页
字号:
;; Mail sending commands for Emacs.;; Copyright (C) 1985, 1986 Free Software Foundation, Inc.;; This file is part of GNU Emacs.;; GNU Emacs 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 1, or (at your option);; any later version.;; GNU Emacs 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 GNU Emacs; see the file COPYING.  If not, write to;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.(provide 'sendmail);(defconst mail-self-blind nil;  "Non-nil means insert BCC to self in messages to be sent.;This is done when the message is initialized,;so you can remove or alter the BCC field to override the default.");(defconst mail-interactive nil;  "Non-nil means when sending a message wait for and display errors.;nil means let mailer mail back a message to report errors.");(defconst mail-yank-ignored-headers;   "^via:\\|^mail-from:\\|^origin:\\|^status:\\|^remailed\\|^received:\\|^message-id:\\|^summary-line:\\|^to:\\|^subject:\\|^in-reply-to:\\|^return-path:";   "Delete these headers from old message when it's inserted in a reply.");(defvar send-mail-function 'sendmail-send-it;  "Function to call to send the current buffer as mail.;The headers are be delimited by a line which is mail-header-separator""); really defined in loaddefs for emacs 17.17+;(defvar mail-header-separator "--text follows this line--";  "*Line used to separate headers from text in messages being composed."); really defined in loaddefs for emacs 17.17+;(defvar mail-archive-file-name nil;  "*Name of file to write all outgoing messages in, or nil for none."); really defined in loaddefs for emacs 17.17+(defvar mail-aliases t  "Alias of mail address aliases,or t meaning should be initialized from .mailrc.")(defvar mail-default-reply-to nil  "*Address to insert as default Reply-to field of outgoing messages.")(defvar mail-abbrevs-loaded nil)(defvar mail-mode-map nil)(autoload 'build-mail-aliases "mailalias"  "Read mail aliases from ~/.mailrc and set mail-aliases."  nil)(autoload 'expand-mail-aliases "mailalias"  "Expand all mail aliases in suitable header fields found between BEG and END.Suitable header fields are To, CC and BCC."  nil)(defun mail-setup (to subject in-reply-to cc replybuffer)  (if (eq mail-aliases t)      (progn	(setq mail-aliases nil)	(if (file-exists-p "~/.mailrc")	    (build-mail-aliases))))  (setq mail-reply-buffer replybuffer)  (goto-char (point-min))  (insert "To: ")  (save-excursion    (if to	(progn	  (insert to "\n")	  ;;; Here removed code to extract names from within <...>	  ;;; on the assumption that mail-strip-quoted-names	  ;;; has been called and has done so.	  (let ((fill-prefix "\t"))	    (fill-region (point-min) (point-max))))      (newline))    (if cc	(let ((opos (point))	      (fill-prefix "\t"))	  (insert "CC: " cc "\n")	  (fill-region-as-paragraph opos (point-max))))    (if in-reply-to	(insert "In-reply-to: " in-reply-to "\n"))    (insert "Subject: " (or subject "") "\n")    (if mail-default-reply-to	(insert "Reply-to: " mail-default-reply-to "\n"))    (if mail-self-blind	(insert "BCC: " (user-login-name) "\n"))    (if mail-archive-file-name	(insert "FCC: " mail-archive-file-name "\n"))    (insert mail-header-separator "\n"))  (if to (goto-char (point-max)))  (or to subject in-reply-to      (set-buffer-modified-p nil))  (run-hooks 'mail-setup-hook))(defun mail-mode ()  "Major mode for editing mail to be sent.Separate names of recipients (in To: and Cc: fields) with commas.Like Text Mode but with these additional commands:C-c C-s  mail-send (send the message)    C-c C-c  mail-send-and-exitC-c C-f  move to a header field (and create it if there isn't):	 C-c C-f C-t  move to To:	C-c C-f C-s  move to Subj:	 C-c C-f C-b  move to BCC:	C-c C-f C-c  move to CC:C-c C-w  mail-signature (insert ~/.signature at end).C-c C-y  mail-yank-original (insert current message, in Rmail).C-c C-q  mail-fill-yanked-message (fill what was yanked)."  (interactive)  (kill-all-local-variables)  (make-local-variable 'mail-reply-buffer)  (setq mail-reply-buffer nil)  (set-syntax-table text-mode-syntax-table)  (use-local-map mail-mode-map)  (setq local-abbrev-table text-mode-abbrev-table)  (setq major-mode 'mail-mode)  (setq mode-name "Mail")  (setq buffer-offer-save t)  (make-local-variable 'paragraph-separate)  (make-local-variable 'paragraph-start)  (setq paragraph-start (concat "^" mail-header-separator				"$\\|^[ \t]*[-_][-_][-_]+$\\|"				paragraph-start))  (setq paragraph-separate (concat "^" mail-header-separator				   "$\\|^[ \t]*[-_][-_][-_]+$\\|"				   paragraph-separate))  (run-hooks 'text-mode-hook 'mail-mode-hook))(if mail-mode-map    nil  (setq mail-mode-map (make-sparse-keymap))  (define-key mail-mode-map "\C-c?" 'describe-mode)  (define-key mail-mode-map "\C-c\C-f\C-t" 'mail-to)  (define-key mail-mode-map "\C-c\C-f\C-b" 'mail-bcc)  (define-key mail-mode-map "\C-c\C-f\C-c" 'mail-cc)  (define-key mail-mode-map "\C-c\C-f\C-s" 'mail-subject)  (define-key mail-mode-map "\C-c\C-w" 'mail-signature)		; who  (define-key mail-mode-map "\C-c\C-y" 'mail-yank-original)  (define-key mail-mode-map "\C-c\C-q" 'mail-fill-yanked-message)  (define-key mail-mode-map "\C-c\C-c" 'mail-send-and-exit)  (define-key mail-mode-map "\C-c\C-s" 'mail-send))(defun mail-send-and-exit (arg)  "Send message like mail-send, then, if no errors, exit from mail buffer.Prefix arg means don't delete this window."  (interactive "P")  (mail-send)  (bury-buffer (current-buffer))  (if (and (not arg)	   (not (one-window-p))	   (save-excursion	     (set-buffer (window-buffer (next-window (selected-window) 'not)))	     (eq major-mode 'rmail-mode)))      (delete-window)    (switch-to-buffer (other-buffer (current-buffer)))))(defun mail-send ()  "Send the message in the current buffer.If  mail-interactive  is non-nil, wait for success indicationor error messages, and inform user.Otherwise any failure is reported in a message back tothe user from the mailer."  (interactive)  (message "Sending...")  (funcall send-mail-function)  (set-buffer-modified-p nil)  (delete-auto-save-file-if-necessary)  (message "Sending...done"))(defun sendmail-send-it ()  (let ((errbuf (if mail-interactive		    (generate-new-buffer " sendmail errors")		  0))	(tembuf (generate-new-buffer " sendmail temp"))	(case-fold-search nil)	delimline	(mailbuf (current-buffer)))    (unwind-protect	(save-excursion	  (set-buffer tembuf)	  (erase-buffer)	  (insert-buffer-substring mailbuf)	  (goto-char (point-max))	  ;; require one newline at the end.	  (or (= (preceding-char) ?\n)	      (insert ?\n))	  ;; Change header-delimiter to be what sendmail expects.	  (goto-char (point-min))	  (re-search-forward	    (concat "^" (regexp-quote mail-header-separator) "\n"))	  (replace-match "\n")	  (backward-char 1)	  (setq delimline (point-marker))	  (if mail-aliases	      (expand-mail-aliases (point-min) delimline))	  (goto-char (point-min))	  ;; ignore any blank lines in the header	  (while (and (re-search-forward "\n\n\n*" delimline t)		      (< (point) delimline))	    (replace-match "\n"))	  (let ((case-fold-search t))	    ;; Find and handle any FCC fields.	    (goto-char (point-min))	    (if (re-search-forward "^FCC:" delimline t)		(mail-do-fcc delimline))	    ;; If there is a From and no Sender, put it a Sender.	    (goto-char (point-min))	    (and (re-search-forward "^From:"  delimline t)		 (not (save-excursion			(goto-char (point-min))			(re-search-forward "^Sender:" delimline t)))		 (progn		   (forward-line 1)		   (insert "Sender: " (user-login-name) "\n")))	    ;; don't send out a blank subject line	    (goto-char (point-min))	    (if (re-search-forward "^Subject:[ \t]*\n" delimline t)		(replace-match ""))	    (if mail-interactive		(save-excursion		  (set-buffer errbuf)		  (erase-buffer))))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -