| Server IP : 217.160.0.212 / Your IP : 216.73.216.141 Web Server : Apache System : Linux www 6.18.51-i1-ampere #1196 SMP Fri Sep 11 20:43:55 CEST 2026 aarch64 User : sws1073854427 ( 1073854427) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/share/emacs/28.2/lisp/mail/ |
Upload File : |
;ELC
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.
(defconst feedmail-patch-level "11-beta-1")
(byte-code "\300\301!\210\302\303\304\"\210\305\306\307\310\311\312\311\313\314\315& \210\305\316\307\317\314\306%\210\305\320\307\321\314\306%\210\305\322\307\323\314\306%\210\305\324\307\325\314\306%\210\326\327\330\331\332DD\333\314\316\334\335&\210\326\336\330\331\337DD\340\341\342\314\316\334\343& \210\326\344\330\331\345DD\346\341\342\314\316\334\347& \210\326\350\330\331\351DD\352\314\320\334\353&\210\326\354\330\331\355DD\356\314\320\334\353&\210\326\357\330\331\360DD\361\314\320\334\362&\210\326\363\330\331\364DD\365\314\320\334\353&\210\326\366\330\331\367DD\370\314\320\334\371&\210\326\372\330\331\373DD\374\314\320\334\353&\210\326\375\330\331\376DD\377\314\320\334\201@ &\210\326\201A \330\331\201B DD\201C \314\320\334\353&\210\326\201D \330\331\201E DD\201F \314\320\334\353&\210\326\201G \330\331\201H DD\201I \314\320\334\201J &\210\326\201K \330\331\201L DD\201M \314\316\334\353&\210\326\201N \330\331\201O DD\201P \314\320\334\201Q &\210\326\201R \330\331\201S DD\201T \341\342\314\320\334\353& \210\326\201U \330\331\201V DD\201W \314\320\334\353&\210\326\201X \330\331\201Y DD\201Z \314\320\334\201[ &\210\326\201\\ \330\331\201] DD\201^ \314\320\334\201_ &\210\326\201` \330\331\201a DD\201b \314\320\334\201c &\210\326\201d \330\331\201e DD\201f \314\320\334\201g &\210\326\201h \330\331\201i DD\201j \314\320\334\201k &\210\326\201l \330\331\201m DD\201n \314\320\334\353&\210\326\201o \330\331\201p DD\201q \314\320\334\201r &\210\326\201s \330\331\201t DD\201u \314\201v \334\353&\207" [require mail-utils autoload mail-do-fcc "sendmail" custom-declare-group feedmail nil "Assist other email packages to massage outgoing messages." :link (url-link "http://www.carpenter.org/feedmail/feedmail.html") (emacs-commentary-link "feedmail") :group mail feedmail-misc "Miscellaneous feedmail options that don't fit in other groups." feedmail-headers "Options related to manipulating specific headers or types of headers." feedmail-queue "Options related to queuing messages for later sending." feedmail-debug "Options related to debug messages for later sending." custom-declare-variable feedmail-confirm-outgoing funcall function #[0 "\300\207" [nil] 1 #1=""] "If non-nil, give a y-or-n confirmation prompt before sending mail.\nThis is done after the message is completely prepped, and you'll be\nlooking at the top of the message in a buffer when you get the prompt.\nIf set to the symbol `queued', give the confirmation prompt only while\nrunning the queue (however, the prompt is always suppressed if you are\nprocessing the queue via `feedmail-run-the-queue-no-prompts'). If set\nto the symbol `immediate', give the confirmation prompt only when\nsending immediately. For any other non-nil value, prompt in both\ncases. You can give a timeout for the prompt; see variable\n`feedmail-confirm-outgoing-timeout'." :type (choice (const nil) (const queued) (const immediate) (other t)) feedmail-display-full-frame #[0 "\300\207" [queued] 1 #1#] "If non-nil, show prepped messages in a full frame.\nIf nil, the prepped message will be shown, for confirmation or\notherwise, in some window in the current frame without resizing\nanything. That may or may not display enough of the message to\ndistinguish it from others. If set to the symbol `queued', take\nthis action only when running the queue. If set to the symbol\n`immediate', take this action only when sending immediately. For\nany other non-nil value, take the action in both cases. Even if\nyou're not confirming the sending of immediate or queued messages,\nit can still be interesting to see a lot about them as they are\nshuttled robotically onward." :version "24.1" (choice (const nil) (const queued) (const immediate) (other t)) feedmail-confirm-outgoing-timeout #[0 "\300\207" [nil] 1 #1#] "If non-nil, a timeout in seconds at the send confirmation prompt.\nIf a positive number, it's a timeout before sending. If a negative\nnumber, it's a timeout before not sending." (choice (const nil) integer) feedmail-nuke-bcc #[0 "\300\207" [t] 1 #1#] "If non-nil remove Bcc: lines from the message headers.\nIn any case, the Bcc: lines do participate in the composed address\nlist. You may want to leave them in if you're using sendmail\n(see `feedmail-buffer-eating-function')." boolean feedmail-nuke-resent-bcc #[0 "\300\207" [t] 1 #1#] "If non-nil remove Resent-Bcc: lines from the message headers.\nIn any case, the Resent-Bcc: lines do participate in the composed\naddress list. You may want to leave them in if you're using sendmail\n(see `feedmail-buffer-eating-function')." feedmail-deduce-bcc-where #[0 "\300\207" [nil] 1 #1#] "Where Bcc:/Resent-Bcc: addresses should appear in the envelope list.\nAddresses for the message envelope are deduced by examining\nappropriate address headers in the message. Generally, they will show\nup in the list of deduced addresses in the order that the headers\nhappen to appear (duplicate addresses are eliminated in any case).\nThis variable can be set to the symbol `first', in which case the\nBcc:/Resent-Bcc: addresses will appear at the beginning in the list;\nor, it can be set to the symbol `last', in which case they will appear\nat the end of the list.\n\nWhy should you care? Well, maybe you don't, and certainly the same\nthings could be accomplished by affecting the order of message headers\nin the outgoing message. Some people use Bcc: as a way of getting\ntheir own \"come back\" copy of each message they send. If Bcc:\naddresses are not handled first, there can be substantial delays in\nseeing the message again. Some configurations of sendmail, for example,\nseem to try to deliver to each addressee at least once, immediately\nand serially, so slow SMTP conversations can add up to a delay. There\nis an option for either `first' or `last' because you might have a\ndelivery agent that processes the addresses backwards." (choice (const nil) (const first) (const last)) feedmail-fill-to-cc #[0 "\300\207" [t] 1 #1#] "If non-nil do smart filling of addressee header lines.\nSmart filling means breaking long lines at appropriate points and\nmaking continuation lines. Despite the function name, it includes\nTo:, Cc:, Bcc: (and their Resent-* forms), as well as From: and\nReply-To: (though they seldom need it). If nil, the lines are left\nas-is. The filling is done after mail address alias expansion." feedmail-fill-to-cc-fill-column #[0 "\300\301!\207" [default-value fill-column] 2 #1#] "Fill column used by `feedmail-fill-to-cc'." integer feedmail-nuke-bcc-in-fcc #[0 "\300\207" [nil] 1 #1#] "If non-nil remove [Resent-]Bcc: lines in message copies saved via Fcc:.\nThis is independent of whether the Bcc: header lines are actually sent\nwith the message (see feedmail-nuke-bcc). Though not implied in the name,\nthe same Fcc: treatment applies to both Bcc: and Resent-Bcc: lines." feedmail-nuke-body-in-fcc #[0 "\300\207" [nil] 1 #1#] "If non-nil remove body of message in copies saved via Fcc:.\nIf a positive integer value, leave (up to) that many lines of the\nbeginning of the body intact. The result is that the Fcc: copy will\nconsist only of the message headers, serving as a sort of an outgoing\nmessage log." (choice (const nil) (const t) integer) feedmail-force-expand-mail-aliases #[0 "\300\207" [nil] 1 #1#] "If non-nil, force the calling of `expand-mail-aliases'.\nNormally, feedmail tries to figure out if you're using mailalias or\nmailabbrevs and only calls `expand-mail-aliases' if it thinks you're\nusing the mailalias package. This user option can be used to force\nthe issue since there are configurations which fool the figuring\nout." feedmail-nuke-empty-headers #[0 "\300\207" [t] 1 #1#] "If non-nil, remove header lines which have no contents.\nA completely empty Subject: header is always removed, regardless of\nthe setting of this variable. The only time you would want them left\nin would be if you used some headers whose presence indicated\nsomething rather than their contents. This is rare in Internet email\nbut common in some proprietary systems." feedmail-sender-line #[0 "\300\207" [nil] 1 #1#] "If non-nil and the email has no Sender: header, use this value.\nMay be nil, in which case nothing in particular is done with respect\nto Sender: lines. By design, will not replace an existing Sender:\nline, but you can achieve that with a fiddle-plex replace action.\nNB: it makes no sense to use the value t since there is no sensible\ndefault for Sender:.\n\nIf not nil, it may be a string, a fiddle-plex, or a function which\nreturns either nil, t, a string, or a fiddle-plex (or, in fact,\nanother function, but let's not be ridiculous). If a string, it\nshould be just the contents of the header, not the name of the header\nitself nor the trailing newline. If a function, it will be called\nwith no arguments. For an explanation of fiddle-plexes, see the\ndocumentation for the variable `feedmail-fiddle-plex-blurb'. In all\ncases the name element of the fiddle-plex is ignored and is hardwired\nby feedmail to either \"Sender\" or \"Resent-Sender\".\n\nYou can probably leave this nil, but if you feel like using it, a good\nvalue would be a string of a fully-qualified domain name form of your\naddress. For example, \"bill@example.net (WJCarpenter)\". The Sender:\nheader is fiddled after the From: header is fiddled." (choice (const nil) string) feedmail-force-binary-write #[0 "\300\207" [t] 1 #1#] "If non-nil, force writing file as binary (this applies to queues and Fcc:).\nOn systems where there is a difference between binary and text files,\nfeedmail will temporarily manipulate the value of `coding-system-for-write'\nto make the writing as binary. If nil, writing will be in text mode.\nOn systems where there is no distinction or where it is controlled by other\nvariables or other means, this option has no effect." feedmail-from-line #[0 "\300\207" [t] 1 #1#] "If non-nil and the email has no From: header, use this value.\nMay be t, in which case a default is computed (and you probably won't\nbe happy with it). May be nil, in which case nothing in particular is\ndone with respect to From: lines. By design, will not replace an\nexisting From: line, but you can achieve that with a fiddle-plex `replace'\naction.\n\nIf neither nil nor t, it may be a string, a fiddle-plex, or a function\nwhich returns either nil, t, a string, or a fiddle-plex (or, in fact,\nanother function, but let's not be ridiculous). If a string, it\nshould be just the contents of the header, not the name of the header\nitself nor the trailing newline. If a function, it will be called\nwith no arguments. For an explanation of fiddle-plexes, see the\ndocumentation for the variable `feedmail-fiddle-plex-blurb'. In all\ncases the name element of the fiddle-plex is ignored and is hardwired\nby feedmail to either \"From\" or \"Resent-From\".\n\nA good value would be a string fully-qualified domain name form of\nyour address. For example, \"bill@example.net (WJCarpenter)\". The\ndefault value of this variable uses the standard elisp variable\n`user-mail-address' which should be set on every system but has a decent\nchance of being wrong. It also honors `mail-from-style'. Better to set\nthis variable explicitly to the string you want or find some other way\nto arrange for the message to get a From: line." (choice (const t) (const nil) string) feedmail-sendmail-f-doesnt-sell-me-out #[0 "\300\207" [nil] 1 #1#] "Whether sendmail should issue a warning header if called with \"-f\".\nThe sendmail program has a useful feature to let you set the envelope FROM\naddress via a command line option, \"-f\". Unfortunately, it also has a widely\ndisliked default behavior of selling you out if you do that by inserting\nan unattractive warning in the headers. It looks something like this:\n\n X-Authentication-Warning: u1.example.com: niceguy set\n sender to niceguy@example.com using -f\n\nIt is possible to configure sendmail to not do this, but such a\nreconfiguration is not an option for many users. As this is the\ndefault behavior of most sendmail installations, one can mostly\nonly wish it were otherwise. If feedmail believes the sendmail\nprogram will sell you out this way, it won't use the \"-f\"\noption when calling sendmail. If it doesn't think sendmail will\nsell you out, it will use the \"-f\" (since it is a handy\nfeature). You control what feedmail thinks with this variable.\nThe default is nil, meaning that feedmail will believe that\nsendmail will sell you out." feedmail-deduce-envelope-from #[0 "\300\207" [t] 1 #1#] "If non-nil, deduce message envelope \"from\" from header From: or Sender:.\nIn other words, if there is a Sender: header in the message, temporarily\nchange the value of `user-mail-address' to be the same while the message\nis being sent. If there is no Sender: header, use the From: header,\nif any. Address values are taken from the actual message just before\nit is sent, and the process is independent of the values of\n`feedmail-from-line' and/or `feedmail-sender-line'.\n\nThere are many and good reasons for having the message header\nFrom:/Sender: be different from the message envelope \"from\"\ninformation. However, for most people and for most circumstances, it\nis usual for them to be the same (this is probably especially true for\nthe case where the user doesn't understand the difference between the\ntwo in the first place).\n\nThe idea behind this feature is that you can have everything set up\nsome normal way for yourself. If for some reason you want to send a\nmessage with another From: line, you can just type it at the top of\nthe message, and feedmail will take care of \"fixing up\" the envelope\n\"from\". This only works for mail senders which make use of\n`user-mail-address' as the envelope \"from\" value. For some mail\nsenders (e.g., feedmail-buffer-to-bin-mail), there is no simple way to\ninfluence what they will use as the envelope." feedmail-x-mailer-line-user-appendage #[0 "\300\207" [nil] 1 #1#] "See feedmail-x-mailer-line." (choice (const nil) (const t) string) feedmail-x-mailer-line #[0 "\300\207" [t] 1 #1#] "Control the form of an X-Mailer: header in an outgoing message.\nModerately useful for debugging, keeping track of your correspondents'\nmailer preferences, or just wearing your MUA on your sleeve. You\nshould probably know that some people are fairly emotional about the\npresence of X-Mailer: lines in email.\n\nIf nil, nothing is done about X-Mailer:.\n\nIf t, an X-Mailer: header of a predetermined format is produced,\ncombining its efforts with any existing X-Mailer: header. If you want\nto take the default construct and just add a little blob of your own\nat the end, define the variable feedmail-x-mailer-line-user-appendage\nas that blob string. A value of t is equivalent to using the function\nfeedmail-default-x-mailer-generator.\n\nIf neither nil nor t, it may be a string, a fiddle-plex, or a function\nwhich returns either nil, t, a string, or a fiddle-plex (or, in fact,\nanother function, but let's not be ridiculous). If a string, it\nshould be just the contents of the header, not the name of the header\nitself nor the trailing newline. If a function, it will be called\nwith no arguments. For an explanation of fiddle-plexes, see the\ndocumentation for the variable `feedmail-fiddle-plex-blurb'. In all\ncases the name element of the fiddle-plex is ignored and is hardwired\nby feedmail to either \"X-Mailer\" or \"X-Resent-Mailer\"." (choice (const t) (const nil) string function) feedmail-message-id-generator #[0 "\300\207" [t] 1 #1#] "Specifies the creation of a Message-Id: header field.\n\nIf nil, nothing is done about Message-Id:.\n\nIf t, a Message-Id: header of a predetermined format is produced, but\nonly if there is not already a Message-Id: in the message. A value of\nt is equivalent to using the function feedmail-default-message-id-generator.\n\nIf neither nil nor t, it may be a string, a fiddle-plex, or a function\nwhich returns either nil, t, a string, or a fiddle-plex (or, in fact,\nanother function, but let's not be ridiculous). If a string, it\nshould be just the contents of the header, not the name of the header\nitself nor the trailing newline. If a function, it will be called\nwith one argument: the possibly-nil name of the file associated with\nthe message buffer. For an explanation of fiddle-plexes, see the\ndocumentation for the variable `feedmail-fiddle-plex-blurb'. In all\ncases the name element of the fiddle-plex is ignored and is hardwired\nby feedmail to either \"Message-Id\" or \"Resent-Message-Id\".\n\nYou should let feedmail generate a Message-Id: for you unless you are sure\nthat whatever you give your messages to will do it for you (e.g., most\nconfigurations of sendmail). Even if the latter case is true, it\nprobably won't hurt you to generate your own, and it will then show up\nin the saved message if you use Fcc:." (choice (const t) (const nil) function) feedmail-message-id-suffix #[0 "\300\207" [nil] 1 #1#] "If non-nil, used as a suffix for generating unique Message-Id: headers.\nThe function `feedmail-default-message-id-generator' creates its work based\non a formatted date-time string, a random number, and a domain-looking suffix.\nYou can control the suffix used by assigning a string value to this variable.\nIf you don't supply one, the value of the variable `user-mail-address' will be\nused. If the value of `feedmail-message-id-suffix' contains an \"@\" character,\nthe string will be used verbatim, else an \"@\" character will be prepended\nautomatically." (choice (const nil) string) feedmail-date-generator #[0 "\300\207" [t] 1 #1#] "Specifies the creation of a Date: header field.\n\nIf nil, nothing is done about Date:.\n\nIf t, a Date: header of a predetermined format is produced, but only\nif there is not already a Date: in the message. A value of t is\nequivalent to using the function `feedmail-default-date-generator'.\n\nIf neither nil nor t, it may be a string, a fiddle-plex, or a function\nwhich returns either nil, t, a string, or a fiddle-plex (or, in fact,\nanother function, but let's not be ridiculous). If a string, it\nshould be just the contents of the header, not the name of the header\nitself nor the trailing newline. If a function, it will be called\nwith one argument: the possibly-nil name of the file associated with\nthe message buffer. For an explanation of fiddle-plexes, see the\ndocumentation for the variable `feedmail-fiddle-plex-blurb'. In all\ncases the name element of the fiddle-plex is ignored and is hardwired\nby feedmail to either \"Date\" or \"Resent-Date\".\n\nIf you decide to format your own date field, do us all a favor and know\nwhat you're doing. Study the relevant parts of RFC-822-or-later and RFC-1123.\nDon't make me come up there!\n\nYou should let feedmail generate a Date: for you unless you are sure\nthat whatever you give your messages to will do it for you (e.g., most\nconfigurations of sendmail). Even if the latter case is true, it\nprobably won't hurt you to generate your own, and it will then show up\nin the saved message if you use Fcc:." (choice (const t) (const nil) function) feedmail-fiddle-headers-upwardly #[0 "\300\207" [t] 1 #1#] "Non-nil means fiddled header fields should go at the top of the header.\nnil means insert them at the bottom. This is mostly a novelty issue since\nthe standards define the ordering of header fields to be immaterial and it's\nfairly likely that some MTA/MUA along the way will have its own idea of what the\norder should be, regardless of what you specify." feedmail-fiddle-plex-user-list #[0 "\300\207" [nil] 1 #1#] "If non-nil, should be a list of one or more fiddle-plexes.\nEach element of the list can also be a function which returns a\nfiddle-plex.\n\nfeedmail will use this list of fiddle-plexes to manipulate user-specified\nmessage header fields. It does this after it has completed all normal\nmessage header field manipulation and before calling\n`feedmail-last-chance-hook'.\n\nFor an explanation of fiddle-plexes, see the documentation for the\nvariable `feedmail-fiddle-plex-blurb'. In contrast to some other fiddle-plex\nmanipulation functions, in this context, it makes no sense to have an element\nwhich is nil, t, or a simple string." (repeat (choice function) sexp) feedmail-enable-spray #[0 "\300\207" [nil] 1 #1#] "If non-nil, transmit message separately to each addressee.\nfeedmail normally accumulates a list of addressees and passes the message\nalong with that list to a buffer-eating function which expects any number\nof addressees. If this variable is non-nil, however, feedmail will\nrepeatedly call the same buffer-eating function. Each time, the list of\naddressees will be just one item from the original list. This only affects\nthe message envelope addresses and doesn't affect what appears in the\nmessage headers except as noted.\n\nSpray mode is usually pointless, and if you can't think of a good reason for\nit, you should avoid it since it is inherently less efficient than normal\nmultiple delivery. One reason to use it is to overcome mis-featured mail\ntransports which betray your trust by revealing Bcc: addressees in the\nheaders of a message. Another use is to do a crude form of mailmerge, for\nwhich see `feedmail-spray-address-fiddle-plex-list'.\n\nIf one of the calls to the buffer-eating function results in an error,\nwhat happens next is carelessly defined, so beware. This should get ironed\nout in some future release, and there could be other API changes for spraying\nas well." feedmail-spray] 10)
#@81 Do not set this variable, except via `feedmail-spray-address-fiddle-plex-list'.
(defvar feedmail-spray-this-address nil (#$ . 21807))
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\207" [custom-declare-variable feedmail-spray-address-fiddle-plex-list funcall function #[0 "\300\207" [nil] 1 ""] "User-supplied specification for a crude form of mailmerge capability.\nWhen spraying is enabled, feedmail composes a list of envelope addresses.\nIn turn, `feedmail-spray-this-address' is temporarily set to each address\n(stripped of any comments and angle brackets) and a function is called which\nfiddles message headers according to this variable. See the documentation for\n`feedmail-fiddle-plex-blurb', for an overview of fiddle-plex data structures.\n\nMay be nil, in which case nothing in particular is done about message\nheaders for specific addresses.\n\nMay be t, in which case a \"To:\" header is added to the message with\nthe stripped address as the header contents. The fiddle-plex operator\nis `supplement'.\n\nMay be a string, in which case the string is assumed to be the name of\na message header field with the stripped address serving as the value.\nThe fiddle-plex operator is `supplement'.\n\nMay be a function, in which case it is called with no arguments and is\nexpected to return nil, t, a string, another function, or a fiddle-plex.\nThe result is used recursively. The function may alter the value of the\nvariable feedmail-spray-this-address, perhaps to embellish it with a\nhuman name. It would be logical in such a case to return as a value a\nstring naming a message header like \"TO\" or an appropriately constructed\nfiddle-plex. For an example, see feedmail-spray-via-bbdb.\n\nMay be a list of any combination of the foregoing and/or\nfiddle-plexes. (A value for this variable which consists of a single\nfiddle-plex must be nested inside another list to avoid ambiguity.)\nIf a list, each item is acted on in turn as described above.\n\nFor example,\n\n (setq feedmail-spray-address-fiddle-plex-list \\='feedmail-spray-via-bbdb)\n\nThe idea of the example is that, during spray mode, as each message is\nabout to be transmitted to an individual address, the function will be\ncalled and will consult `feedmail-spray-this-address' to find the\nstripped envelope email address (no comments or angle brackets). The\nfunction should return an embellished form of the address.\n\nThe recipe for sending form letters is: (1) create a message with\nall addressees on Bcc: headers; (2) tell feedmail to remove Bcc:\nheaders before sending the message; (3) create a function which\nwill embellish stripped addresses, if desired; (4) define\n`feedmail-spray-address-fiddle-plex-list' appropriately; (5) send\nthe message with `feedmail-enable-spray' set non-nil; (6) stand\nback and watch co-workers wonder at how efficient you are at\naccomplishing inherently inefficient things." :group feedmail-spray :type sexp] 8)
#@148 Example function for use with feedmail spray mode.
NB: it's up to the user to have the BBDB environment already set up properly
before using this.
(defalias 'feedmail-spray-via-bbdb #[0 "\301\211\211\302\303!\304Q\262\305\306 \301\211$\262@\203% A\204% @\262\202( \301\262\2031 \307!\262\211\203: \310\311E\207\310\311E\207" [feedmail-spray-this-address nil "^" regexp-quote "$" bbdb-search bbdb-records bbdb-dwim-net-address "To" supplement] 8 (#$ . 24774)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\311&\210\300\315\302\303\316DD\317\306\307\310\320&\210\300\321\302\303\322DD\323\306\307\310\320&\210\300\324\302\303\325DD\326\306\307\310\311&\210\300\327\302\303\330DD\331\306\307\310\320&\210\300\332\302\303\333DD\334\306\307\310\320&\210\300\335\302\303\336DD\337\306\307\310\340&\207" [custom-declare-variable feedmail-enable-queue funcall function #[0 "\300\207" [nil] 1 #1=""] "If non-nil, provide for stashing outgoing messages in a queue.\nThis is the master on/off switch for feedmail message queuing.\nQueuing is quite handy for laptop-based users. It's also handy if you\nget a lot of mail and process it more or less sequentially. For\nexample, you might change your mind about contents of a reply based on\na message you see a bit later.\n\nThere is a separate queue for draft messages, intended to prevent\nyou from accidentally sending incomplete messages. The queues are\ndisk-based and intended for later transmission. The messages are\nqueued in their raw state as they appear in the `mail-mode' buffer and\ncan be arbitrarily edited later, before sending, by visiting the\nappropriate file in the queue directory (and setting the buffer to\nmail-mode or whatever). If you visit a file in the queue directory\nand try to queue it again, it will just get saved in its existing file\nname. You can move a message from the draft to the main queue or vice\nversa by pretending to send it and then selecting whichever queue\ndirectory you want at the prompt. The right thing will happen.\n\nTo transmit all the messages in the queue, invoke the command\n`feedmail-run-the-queue' or `feedmail-run-the-queue-no-prompts'." :group feedmail-queue :type boolean feedmail-queue-runner-confirm-global #[0 "\300\207" [nil] 1 #1#] "If non-nil, give a y-or-n confirmation prompt before running the queue.\nPrompt even if the queue is about to be processed as a result of a call to\n`feedmail-run-the-queue-no-prompts'. This gives you a way to bail out\nwithout having to answer no to the individual message prompts." feedmail-queue-directory #[0 "\300\301!\207" [expand-file-name "~/mail/q"] 2 #1#] "Name of a directory where messages will be queued.\nDirectory will be created if necessary. Should be a string that\ndoesn't end with a slash. Default is \"~/mail/q\"." string feedmail-queue-draft-directory #[0 "\300\301!\207" [expand-file-name "~/mail/draft"] 2 #1#] "Name of a directory where draft messages will be queued.\nDirectory will be created if necessary. Should be a string that\ndoesn't end with a slash. Default is \"~/mail/draft\"." feedmail-ask-before-queue #[0 "\300\207" [t] 1 #1#] "If non-nil, feedmail will ask what you want to do with the message.\nDefault choices for the message action prompt will include sending it\nimmediately, putting it in the main queue, putting it in the draft\nqueue, or returning to the buffer to continue editing. Only matters if\nqueuing is enabled. If nil, the message is placed in the main queue\nwithout a prompt." feedmail-ask-before-queue-prompt #[0 "\300\207" ["FQM: Message action (q, i, d, e, ?)? [%s]: "] 1 #1#] "A string which will be used for the message action prompt.\nIf it contains a \"%s\", that will be replaced with the value of\n`feedmail-ask-before-queue-default'." feedmail-ask-before-queue-reprompt #[0 "\300\207" ["FQM: Please type q, i, d, or e; or ? for help [%s]: "] 1 #1#] "A string which will be used for reprompting after invalid input.\nIf it contains a \"%s\", that will be replaced with the value of\n`feedmail-ask-before-queue-default'." feedmail-ask-before-queue-default #[0 "\300\207" ["queue"] 1 #1#] "Meaning if user hits return in response to the message action prompt.\nShould be a character or a string; if a string, only the first\ncharacter is significant. Useful values are those described in\nthe help for the message action prompt." (choice string integer)] 8)
#@571 An alist of choices for the message action prompt.
All of the values are function names, except help, which is a special
symbol that calls up help for the prompt (the help describes the
actions from the standard alist). To customize your own choices,
define a similar alist called `feedmail-prompt-before-queue-user-alist'.
The actual alist used for message action will be the standard alist
overlaid with the user-alist. To neutralize an item in the standard
alist without providing a replacement, define an appropriate element
in the user alist with a value of nil.
(defvar feedmail-prompt-before-queue-standard-alist '((113 . feedmail-message-action-queue) (81 . feedmail-message-action-queue-strong) (100 . feedmail-message-action-draft) (114 . feedmail-message-action-draft) (68 . feedmail-message-action-draft-strong) (82 . feedmail-message-action-draft-strong) (101 . feedmail-message-action-edit) (69 . feedmail-message-action-edit) (7 . feedmail-message-action-edit) (110 . feedmail-message-action-edit) (78 . feedmail-message-action-edit) (105 . feedmail-message-action-send) (73 . feedmail-message-action-send-strong) (115 . feedmail-message-action-send) (83 . feedmail-message-action-send-strong) (42 . feedmail-message-action-toggle-spray) (62 . feedmail-message-action-scroll-up) (60 . feedmail-message-action-scroll-down) (32 . feedmail-message-action-scroll-up) (63 . feedmail-message-action-help)) (#$ . 29238))
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\315&\210\300\316\302\303\317DD\320\306\307\310\321&\210\300\322\302\303\323DD\324\306\307\310\325&\210\300\326\302\303\327DD\330\306\307\310\331&\210\300\332\302\303\333DD\334\306\307\310\335&\210\300\336\302\303\337DD\340\306\307\310\325&\210\300\341\302\303\342DD\343\306\307\310\325&\210\300\344\302\303\345DD\346\306\307\310\325&\210\300\347\302\303\350DD\351\306\307\310\352&\210\300\353\302\303\354DD\355\356\357\306\307\310\360& \210\300\361\302\303\362DD\363\306\307\310\364&\210\300\365\302\303\366DD\367\306\307\310\370&\210\300\371\302\303\372DD\373\306\307\310\325&\210\300\374\302\303\375DD\376\306\307\310\325&\210\300\377\302\303\201@ DD\201A \356\357\306\377\310\325& \210\300\201B \302\303\201C DD\201D \356\357\306\377\310\331& \207" [custom-declare-variable feedmail-prompt-before-queue-user-alist funcall function #[0 "\300\207" [nil] 1 #1=""] "See `feedmail-prompt-before-queue-standard-alist'." :group feedmail-queue :type (repeat (cons character function)) feedmail-prompt-before-queue-help-supplement #[0 "\300\207" [nil] 1 #1#] "User-provided supplementary help string for the message action prompt.\nWhen the message action prompt is shown, the user can as for verbose help,\nat which point a buffer pops up describing the meaning of possible\nresponses to the prompt. Through various customizations (see, for\nexample, `feedmail-prompt-before-queue-user-alist'), the available responses\nand the prompt itself can be changed. If this variable is set to a string\nvalue, that string is written to the help buffer after the standard info.\nIt may contain embedded line breaks. It will be printed via `princ'." (choice (const nil) string) feedmail-queue-reminder-alist #[0 "\300\207" [((after-immediate . feedmail-queue-reminder-brief) (after-queue . feedmail-queue-reminder-medium) (after-draft . feedmail-queue-reminder-medium) (after-run . feedmail-queue-reminder-brief) (on-demand . feedmail-run-the-queue-global-prompt))] 1 #1#] "See `feedmail-queue-reminder'." (repeat (cons (choice :tag "Event" (const on-demand) (const after-immediate) (const after-queue) (const after-draft) (const after-run)) function)) feedmail-queue-chatty #[0 "\300\207" [t] 1 #1#] "If non-nil, blat a few status messages and such in the mini-buffer.\nIf nil, just do the work and don't pester people about what's going on.\nIn some cases, though, specific options inspire mini-buffer prompting.\nThat's not affected by this variable setting. Also does not control\nreporting of error/abnormal conditions." boolean feedmail-queue-chatty-sit-for #[0 "\300\207" [2] 1 #1#] "Duration of pause after most queue-related messages.\nAfter some messages are divulged, it is prudent to pause before\nsomething else obliterates them. This value controls the duration of\nthe pause." integer feedmail-queue-run-orderer #[0 "\300\207" [nil] 1 #1#] "If non-nil, name a function which will sort the queued messages.\nThe function is called during a running of the queue for sending, and\ntakes one argument, a list of the files in the queue directory. It\nmay contain the names of non-message files, and it's okay to leave\nthem in the list when reordering it; they get skipped over later.\nWhen nil, the default action processes the messages in normal sort\norder by queued file name, which will typically result in the order\nthey were placed in the queue." (choice (const nil) function) feedmail-queue-use-send-time-for-date #[0 "\300\207" [nil] 1 #1#] "If non-nil, use send time for the Date: header value.\nThis variable is used by the default date generating function,\nfeedmail-default-date-generator. If nil, the default, the\nlast-modified timestamp of the queue file is used to create the\nmessage Date: header; if there is no queue file, the current time\nis used. If you are using VM, it might be supplying this header\nfor you. To suppress VM's version\n\n (setq vm-mail-header-insert-date nil)" feedmail-queue-use-send-time-for-message-id #[0 "\300\207" [nil] 1 #1#] "If non-nil, use send time for the Message-Id: header value.\nThis variable is used by the default Message-Id: generating function,\n`feedmail-default-message-id-generator'. If nil, the default, the\nlast-modified timestamp of the queue file is used to create the\nmessage Message-Id: header; if there is no queue file, the current time is\nused. If you are using VM, it might be supplying this header for\nyou. To suppress VM's version\n\n (setq vm-mail-header-insert-date nil)" feedmail-ask-for-queue-slug #[0 "\300\207" [nil] 1 #1#] "If non-nil, prompt user for part of the queue file name.\nThe file will automatically get the FQM suffix and an embedded\nsequence number for uniqueness, so don't specify that. feedmail will\nget rid of all characters other than alphanumeric and hyphen in the\nresults. If this variable is nil or if you just hit return in\nresponse to the prompt, feedmail queuing will take care of things\nproperly. At the prompt, completion is available if you want to see\nwhat filenames are already in use, though, as noted, you will not be\ntyping a complete file name. You probably don't want to be bothered\nwith this prompting since feedmail, by default, uses queue file names\nbased on the subjects of the messages." feedmail-queue-slug-maker #[0 "\300\207" [feedmail-queue-subject-slug-maker] 1 #1#] "If non-nil, a function which creates part of the queued file name.\nTakes a single argument giving the name of the directory into\nwhich the message will be queued. The returned string should be just\nthe non-directory filename part, without FQM suffix or uniquifying\nsequence numbers. The current buffer holds the raw message. The\ndefault function creates the slug based on the message subject, if\nany." (choice (const nil) function) feedmail-queue-slug-suspect-regexp #[0 "\300\207" ["[^a-z0-9-]+"] 1 #1#] "Regular expression for characters/substrings to be replaced.\nWhen feedmail creates a filename from a subject string, it puts hyphens\nin place of strings which may cause problems in filenames. By default,\nonly alphanumeric and hyphen characters are kept, and all others are\nconverted. In non-ASCII environments, it may be more helpful to\ntweak this regular expression to reflect local or personal language\nconventions. Substitutions are done repeatedly until the regular expression\nno longer matches to transformed string. Used by function\nfeedmail-tidy-up-slug and indirectly by feedmail-queue-subject-slug-maker." :version "24.1" regexp feedmail-queue-default-file-slug #[0 "\300\207" [t] 1 #1#] "Indicates what to use for subject-less messages when forming a file name.\nWhen feedmail queues a message, it creates a unique file name. By default,\nthe file name is based in part on the subject of the message being queued.\nIf there is no subject, consult this variable. See documentation for the\nfunction `feedmail-queue-subject-slug-maker'.\n\nIf t, an innocuous default is used.\n\nIf a string, it is used directly.\n\nIf a function, it is called with no arguments from the buffer containing the raw\ntext of the message. It must return a string (which may be empty).\n\nIf the symbol `ask', you will be prompted for a string in the mini-buffer.\nFilename completion is available so that you can inspect what's already been\nused, but feedmail will do further manipulation on the string you return, so\nit's not expected to be a complete filename." (choice (const :tag "Default" t) string function (const ask)) feedmail-queue-fqm-suffix #[0 "\300\207" [".fqm"] 1 #1#] "The FQM suffix used to distinguish feedmail queued message files.\nYou probably want this to be a period followed by some letters and/or\ndigits. The distinction is to be able to tell them from other random\nfiles that happen to be in the `feedmail-queue-directory' or\n`feedmail-queue-draft-directory'. By the way, FQM stands for feedmail\nqueued message." string feedmail-nuke-buffer-after-queue #[0 "\300\207" [nil] 1 #1#] "If non-nil, silently kill the buffer after a message is queued.\nYou might like that since a side-effect of queueing the message is\nthat its buffer name gets changed to the filename. That means that\nthe buffer won't be reused for the next message you compose. If you\nare using VM for creating messages, you probably want to leave this\nnil, since VM has its own options for managing the recycling of\nmessage buffers." feedmail-queue-auto-file-nuke #[0 "\300\207" [nil] 1 #1#] "If non-nil, automatically delete queue files when a message is sent.\nNormally, feedmail will notice such files when you send a message in\nimmediate mode (i.e., not when you're running the queue) and will ask if\nyou want to delete them. Since the answer is usually yes, setting this\nvariable to non-nil will tell feedmail to skip the prompt and just delete\nthe file without bothering you." feedmail-debug #[0 "\300\207" [nil] 1 #1#] "If non-nil, blat a debug messages and such in the mini-buffer.\nThis is intended as an aid to tracing what's going on but is probably\nof casual real use only to the feedmail developer." feedmail-debug-sit-for #[0 "\300\207" [0] 1 #1#] "Duration of pause after feedmail-debug messages.\nAfter some messages are divulged, it may be helpful to pause before\nsomething else obliterates them. This value controls the duration of\nthe pause. If the value is nil or 0, the `sit-for' is not done, which\nhas the effect of not pausing at all. Debug messages can be seen after\nthe fact in the messages buffer."] 10)
#@1442 If non-nil, has the value normally expected of `buffer-file-name'.
You are not intended to set this to something in your configuration. Rather,
you might programmatically set it to something via a hook or function
advice or whatever. You might like to do this if you are using a mail
composition program that eventually uses sendmail.el's `mail-send'
function to process the message. If there is a filename associated
with the message buffer, `mail-send' will ask you for confirmation.
There's no trivial way to avoid it. It's unwise to just set the value
of `buffer-file-name' to nil because that will defeat feedmail's file
management features. Instead, arrange for this variable to be set to
the value of `buffer-file-name' before setting that to nil. An easy way
to do that would be with an advice on `mail-send'.
feedmail will pretend that `buffer-file-name', if nil, has the value
assigned of `feedmail-queue-buffer-file-name' and carry out its normal
activities. feedmail does not restore the non-nil value of
`buffer-file-name'. For safe bookkeeping, the user should ensure that
feedmail-queue-buffer-file-name is restored to nil.
Example advice for mail-send:
(advice-add 'mail-send :around #'my-feedmail-mail-send-advice)
(defun my-feedmail-mail-send-advice (orig-fun &rest args)
(let ((feedmail-queue-buffer-file-name buffer-file-name)
(buffer-file-name nil))
(apply orig-fun args)))
(defvar feedmail-queue-buffer-file-name nil (#$ . 40274))
(defvar feedmail-error-buffer nil)
(defvar feedmail-prepped-text-buffer nil)
(defvar feedmail-raw-text-buffer nil)
(defvar feedmail-address-list nil)
#@392 Non-nil means we're inside the logic of the queue-running loop.
That is, iterating over all messages in the queue to send them. In
that case, the value is the name of the queued message file currently
being processed. This can be used for differentiating customized code
for different scenarios. Users shouldn't set or change this
variable, but may depend on its value as described here.
(defvar feedmail-queue-runner-is-active nil (#$ . 41930))
#@881 Facilitate dividing `mail-send-hook' things into queued and immediate cases.
If you have `mail-send-hook' functions that should only be called
for sending/ queueing messages or only be called for the sending
of queued messages, this is for you. Add this function to
`mail-send-hook' with something like this:
(add-hook \='mail-send-hook \='feedmail-mail-send-hook-splitter)
Then add the functions you want called to either
`feedmail-mail-send-hook-queued' or `feedmail-mail-send-hook', as
appropriate. The distinction is that `feedmail-mail-send-hook'
will be called when you send mail from a composition
buffer (typically by typing C-c C-c), whether the message is sent
immediately or placed in the queue or drafts directory.
`feedmail-mail-send-hook-queued' is called when messages are
being sent from the queue directory, typically via a call to
`feedmail-run-the-queue'.
(defalias 'feedmail-mail-send-hook-splitter #[0 "\301\302\"\210\203
\303\304!\207\303\305!\207" [feedmail-queue-runner-is-active feedmail-say-debug ">in-> feedmail-mail-send-hook-splitter %s" run-hooks feedmail-mail-send-hook-queued feedmail-mail-send-hook] 3 (#$ . 42386)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\311&\207" [custom-declare-variable feedmail-mail-send-hook funcall function #[0 "\300\207" [nil] 1 #1=""] "Hook run by `feedmail-mail-send-hook-splitter' for immediate mail.\nSee documentation of `feedmail-mail-send-hook-splitter' for details." :type hook :group feedmail feedmail-mail-send-hook-queued #[0 "\300\207" [nil] 1 #1#] "Hook run by `feedmail-mail-send-hook-splitter' for queued mail.\nSee documentation of `feedmail-mail-send-hook-splitter' for details."] 8)
#@188 An example of a `feedmail-last-chance-hook'.
It shows the simple addresses and gets a confirmation. Use as:
(setq feedmail-last-chance-hook \='feedmail-confirm-addresses-hook-example).
(defalias 'feedmail-confirm-addresses-hook-example #[0 "\301 \302\303\"\216\304\305\306!q!\210\307 \210\310\311\312#c\210\313\314!?\205\"