;;; nnmail.el --- mail support functions for the Gnus mail backends
-;; Copyright (C) 1995-2011
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1995-2013 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news, mail
(autoload 'gnus-add-buffer "gnus")
(autoload 'gnus-kill-buffer "gnus")
+(eval-when-compile
+ (autoload 'mail-send-and-exit "sendmail" nil t))
(defgroup nnmail nil
"Reading mail with Gnus."
many days an article can be stored before it is considered \"old\".
It can also return the values `never' and `immediate'.
-Eg.:
+E.g.:
\(setq nnmail-expiry-wait-function
(lambda (newsgroup)
emptied, and can be used to call any mail box programs you have
running (\"xwatch\", etc.)
-Eg.
+E.g.:
\(add-hook 'nnmail-read-incoming-hook
(lambda ()
(const warn)
(const delete)))
-(defcustom nnmail-extra-headers '(To Newsgroups)
- "*Extra headers to parse."
- :version "21.1"
+(defcustom nnmail-extra-headers '(To Newsgroups Cc)
+ "Extra headers to parse.
+In addition to the standard headers, these extra headers will be
+included in NOV headers (and the like) when backends parse headers."
+ :version "24.3"
:group 'nnmail
:type '(repeat symbol))
(setq nnmail-split-trace nil))
(if (or (and (symbolp nnmail-split-methods)
(fboundp nnmail-split-methods))
+ (not (consp (car-safe nnmail-split-methods)))
(and (listp nnmail-split-methods)
;; Not a regular split method, so it has to be a
;; fancy one.
;; This is the final group, which is used as a
;; catch-all.
(when (and (not group-art)
- (not nnmail-inhibit-default-split-group))
+ (or (equal "" (nth 1 method))
+ (not nnmail-inhibit-default-split-group)))
(setq group-art
(list (cons (car method)
(funcall func (car method))))))))
(i 0)
(new 0)
(total 0)
- incoming incomings source)
+ source)
(when (and (nnmail-get-value "%s-get-new-mail" method)
sources)
(while (setq source (pop sources))
;; and fetch the mail from each.
(while (setq source (pop fetching-sources))
(when (setq new
- (mail-source-fetch
- source
- (gnus-byte-compile
- `(lambda (file orig-file)
- (nnmail-split-incoming
- file ',(intern (format "%s-save-mail" method))
- ',spool-func
- (or in-group
- (if (equal file orig-file)
- nil
- (nnmail-get-split-group orig-file ',source)))
- ',(intern (format "%s-active-number" method)))))))
+ (condition-case cond
+ (mail-source-fetch
+ source
+ (gnus-byte-compile
+ `(lambda (file orig-file)
+ (nnmail-split-incoming
+ file ',(intern (format "%s-save-mail" method))
+ ',spool-func
+ (or in-group
+ (if (equal file orig-file)
+ nil
+ (nnmail-get-split-group orig-file
+ ',source)))
+ ',(intern (format "%s-active-number" method))))))
+ ((error quit)
+ (message "Mail source %s failed: %s" source cond)
+ 0)))
(incf total new)
(incf i)))
;; If we did indeed read any incoming spools, we save all info.
((and (equal header 'to-from)
(or (string-match (cadr regexp-target-pair) from)
(and (string-match (cadr regexp-target-pair) to)
- (let ((rmail-dont-reply-to-names
- (message-dont-reply-to-names)))
- (equal (rmail-dont-reply-to from) "")))))
+ (let* ((mail-dont-reply-to-names
+ (message-dont-reply-to-names))
+ (rmail-dont-reply-to-names ; obsolete since 24.1
+ mail-dont-reply-to-names))
+ (equal (if (fboundp 'rmail-dont-reply-to)
+ (rmail-dont-reply-to from)
+ (mail-dont-reply-to from)) "")))))
(setq target (format-time-string (caddr regexp-target-pair) date)))
((and (not (equal header 'to-from))
(string-match (cadr regexp-target-pair)