1992-07-16 04:23:17 +00:00
|
|
|
;;; mailpost.el --- RMAIL coupler to /usr/uci/post mailer
|
|
|
|
|
1992-07-22 02:58:21 +00:00
|
|
|
;; This is in the public domain
|
2009-11-03 03:12:34 +00:00
|
|
|
;; since Delp distributed it in 1986 without a copyright notice.
|
1992-07-22 02:58:21 +00:00
|
|
|
|
2001-07-15 16:15:35 +00:00
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
1992-07-16 04:23:17 +00:00
|
|
|
;; Author: Gary Delp <delp@huey.Udel.Edu>
|
|
|
|
;; Maintainer: FSF
|
|
|
|
;; Created: 13 Jan 1986
|
1992-07-17 08:15:29 +00:00
|
|
|
;; Keywords: mail
|
1992-07-16 04:23:17 +00:00
|
|
|
|
|
|
|
;;; Commentary:
|
1992-05-30 22:12:04 +00:00
|
|
|
|
1986-09-18 22:28:40 +00:00
|
|
|
;; Yet another mail interface. this for the rmail system to provide
|
|
|
|
;; the missing sendmail interface on systems without /usr/lib/sendmail,
|
|
|
|
;; but with /usr/uci/post.
|
1992-07-16 04:23:17 +00:00
|
|
|
|
|
|
|
;;; Code:
|
1986-09-18 22:28:40 +00:00
|
|
|
|
1992-08-04 04:15:43 +00:00
|
|
|
(require 'mailalias)
|
|
|
|
(require 'sendmail)
|
|
|
|
|
1986-09-18 22:28:40 +00:00
|
|
|
;; (setq send-mail-function 'post-mail-send-it)
|
|
|
|
|
|
|
|
(defun post-mail-send-it ()
|
1991-04-02 22:13:25 +00:00
|
|
|
"The MH -post interface for `rmail-mail' to call.
|
|
|
|
To use it, include \"(setq send-mail-function 'post-mail-send-it)\" in
|
|
|
|
site-init."
|
1986-09-18 22:28:40 +00:00
|
|
|
(let ((errbuf (if mail-interactive
|
|
|
|
(generate-new-buffer " post-mail errors")
|
|
|
|
0))
|
2000-06-23 07:13:08 +00:00
|
|
|
temfile
|
1986-09-18 22:28:40 +00:00
|
|
|
(tembuf (generate-new-buffer " post-mail temp"))
|
|
|
|
(case-fold-search nil)
|
|
|
|
delimline
|
|
|
|
(mailbuf (current-buffer)))
|
|
|
|
(unwind-protect
|
* url-util.el (url-insert-entities-in-string):
* url-nfs.el (url-nfs-unescape):
* url-ldap.el (url-ldap):
* url-imap.el (url-imap):
* url-cid.el (url-cid-gnus, url-cid): Use with-current-buffer.
* erc.el (erc-display-line-1, erc-process-away):
* erc-truncate.el (erc-truncate-buffer-to-size):
Use with-current-buffer.
* term/ns-win.el (ns-scroll-bar-move, ns-face-at-pos):
* play/mpuz.el (mpuz-create-buffer):
* play/landmark.el (lm-prompt-for-move, lm-print-wts, lm-print-smell)
(lm-print-y,s,noise, lm-print-w0, lm-init):
* play/gomoku.el (gomoku-prompt-for-move):
* play/fortune.el (fortune-in-buffer):
* play/dissociate.el (dissociated-press):
* play/decipher.el (decipher-adjacency-list, decipher-display-regexp)
(decipher-analyze-buffer, decipher-stats-buffer,decipher-stats-buffer):
* mail/supercite.el (sc-eref-show):
* mail/smtpmail.el (smtpmail-send-it):
* mail/rmailsum.el (rmail-summary-next-labeled-message)
(rmail-summary-previous-labeled-message, rmail-summary-wipe)
(rmail-summary-undelete-many, rmail-summary-rmail-update)
(rmail-summary-goto-msg, rmail-summary-expunge)
(rmail-summary-get-new-mail, rmail-summary-search-backward)
(rmail-summary-add-label, rmail-summary-output-menu)
(rmail-summary-output-body):
* mail/rfc822.el (rfc822-addresses):
* mail/reporter.el (reporter-dump-variable, reporter-dump-state):
* mail/mailpost.el (post-mail-send-it):
* mail/hashcash.el (hashcash-generate-payment):
* mail/feedmail.el (feedmail-run-the-queue)
(feedmail-queue-send-edit-prompt-help-first)
(feedmail-send-it-immediately, feedmail-give-it-to-buffer-eater)
(feedmail-deduce-address-list):
* eshell/esh-ext.el (eshell-remote-command):
* eshell/em-unix.el (eshell-occur-mode-mouse-goto):
* emulation/viper-util.el (viper-glob-unix-files, viper-save-setting)
(viper-wildcard-to-regexp, viper-glob-mswindows-files)
(viper-save-string-in-file, viper-valid-marker):
* emulation/viper-keym.el (viper-toggle-key):
* emulation/viper-ex.el (ex-expand-filsyms, viper-get-ex-file)
(ex-edit, ex-global, ex-mark, ex-next-related-buffer, ex-quit)
(ex-get-inline-cmd-args, ex-tag, ex-command, ex-compile):
* emulation/viper-cmd.el (viper-exec-form-in-vi)
(viper-exec-form-in-emacs, viper-brac-function):
* emulation/viper.el (viper-delocalize-var):
* emulation/vip.el (vip-mode, vip-get-ex-token, vip-ex, vip-get-ex-pat)
(vip-get-ex-command, vip-get-ex-opt-gc, vip-get-ex-buffer)
(vip-get-ex-count, vip-get-ex-file, ex-edit, ex-global, ex-mark)
(ex-map, ex-unmap, ex-quit, ex-read, ex-tag, ex-command):
* emulation/vi.el (vi-switch-mode, vi-ex-cmd):
* emulation/edt.el (edt-electric-helpify):
* emulation/cua-rect.el (cua--rectangle-aux-replace):
* emulation/cua-gmrk.el (cua--insert-at-global-mark)
(cua--delete-at-global-mark, cua--copy-rectangle-to-global-mark)
(cua-indent-to-global-mark-column):
* calendar/diary-lib.el (calendar-mark-1):
* calendar/cal-hebrew.el (calendar-hebrew-mark-date-pattern):
Use with-current-buffer.
* emulation/viper.el (viper-delocalize-var): Use dolist.
2009-11-03 02:04:29 +00:00
|
|
|
(with-current-buffer tembuf
|
1986-09-18 22:28:40 +00:00
|
|
|
(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 post-mail expects.
|
1998-05-03 04:36:03 +00:00
|
|
|
(mail-sendmail-undelimit-header)
|
1986-09-18 22:28:40 +00:00
|
|
|
(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"))
|
|
|
|
;; Find and handle any FCC fields.
|
|
|
|
(let ((case-fold-search t))
|
|
|
|
(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
|
* url-util.el (url-insert-entities-in-string):
* url-nfs.el (url-nfs-unescape):
* url-ldap.el (url-ldap):
* url-imap.el (url-imap):
* url-cid.el (url-cid-gnus, url-cid): Use with-current-buffer.
* erc.el (erc-display-line-1, erc-process-away):
* erc-truncate.el (erc-truncate-buffer-to-size):
Use with-current-buffer.
* term/ns-win.el (ns-scroll-bar-move, ns-face-at-pos):
* play/mpuz.el (mpuz-create-buffer):
* play/landmark.el (lm-prompt-for-move, lm-print-wts, lm-print-smell)
(lm-print-y,s,noise, lm-print-w0, lm-init):
* play/gomoku.el (gomoku-prompt-for-move):
* play/fortune.el (fortune-in-buffer):
* play/dissociate.el (dissociated-press):
* play/decipher.el (decipher-adjacency-list, decipher-display-regexp)
(decipher-analyze-buffer, decipher-stats-buffer,decipher-stats-buffer):
* mail/supercite.el (sc-eref-show):
* mail/smtpmail.el (smtpmail-send-it):
* mail/rmailsum.el (rmail-summary-next-labeled-message)
(rmail-summary-previous-labeled-message, rmail-summary-wipe)
(rmail-summary-undelete-many, rmail-summary-rmail-update)
(rmail-summary-goto-msg, rmail-summary-expunge)
(rmail-summary-get-new-mail, rmail-summary-search-backward)
(rmail-summary-add-label, rmail-summary-output-menu)
(rmail-summary-output-body):
* mail/rfc822.el (rfc822-addresses):
* mail/reporter.el (reporter-dump-variable, reporter-dump-state):
* mail/mailpost.el (post-mail-send-it):
* mail/hashcash.el (hashcash-generate-payment):
* mail/feedmail.el (feedmail-run-the-queue)
(feedmail-queue-send-edit-prompt-help-first)
(feedmail-send-it-immediately, feedmail-give-it-to-buffer-eater)
(feedmail-deduce-address-list):
* eshell/esh-ext.el (eshell-remote-command):
* eshell/em-unix.el (eshell-occur-mode-mouse-goto):
* emulation/viper-util.el (viper-glob-unix-files, viper-save-setting)
(viper-wildcard-to-regexp, viper-glob-mswindows-files)
(viper-save-string-in-file, viper-valid-marker):
* emulation/viper-keym.el (viper-toggle-key):
* emulation/viper-ex.el (ex-expand-filsyms, viper-get-ex-file)
(ex-edit, ex-global, ex-mark, ex-next-related-buffer, ex-quit)
(ex-get-inline-cmd-args, ex-tag, ex-command, ex-compile):
* emulation/viper-cmd.el (viper-exec-form-in-vi)
(viper-exec-form-in-emacs, viper-brac-function):
* emulation/viper.el (viper-delocalize-var):
* emulation/vip.el (vip-mode, vip-get-ex-token, vip-ex, vip-get-ex-pat)
(vip-get-ex-command, vip-get-ex-opt-gc, vip-get-ex-buffer)
(vip-get-ex-count, vip-get-ex-file, ex-edit, ex-global, ex-mark)
(ex-map, ex-unmap, ex-quit, ex-read, ex-tag, ex-command):
* emulation/vi.el (vi-switch-mode, vi-ex-cmd):
* emulation/edt.el (edt-electric-helpify):
* emulation/cua-rect.el (cua--rectangle-aux-replace):
* emulation/cua-gmrk.el (cua--insert-at-global-mark)
(cua--delete-at-global-mark, cua--copy-rectangle-to-global-mark)
(cua-indent-to-global-mark-column):
* calendar/diary-lib.el (calendar-mark-1):
* calendar/cal-hebrew.el (calendar-hebrew-mark-date-pattern):
Use with-current-buffer.
* emulation/viper.el (viper-delocalize-var): Use dolist.
2009-11-03 02:04:29 +00:00
|
|
|
(with-current-buffer errbuf
|
1986-09-18 22:28:40 +00:00
|
|
|
(erase-buffer))))
|
2000-06-23 07:13:08 +00:00
|
|
|
(let ((m (default-file-modes)))
|
|
|
|
(unwind-protect
|
|
|
|
(progn
|
|
|
|
(set-default-file-modes 384)
|
|
|
|
(setq temfile (make-temp-file ",rpost")))
|
|
|
|
(set-default-file-modes m)))
|
1986-09-18 22:28:40 +00:00
|
|
|
(apply 'call-process
|
|
|
|
(append (list (if (boundp 'post-mail-program)
|
|
|
|
post-mail-program
|
|
|
|
"/usr/uci/lib/mh/post")
|
|
|
|
nil errbuf nil
|
|
|
|
"-nofilter" "-msgid")
|
|
|
|
(if mail-interactive '("-watch") '("-nowatch"))
|
|
|
|
(list temfile)))
|
|
|
|
(if mail-interactive
|
* url-util.el (url-insert-entities-in-string):
* url-nfs.el (url-nfs-unescape):
* url-ldap.el (url-ldap):
* url-imap.el (url-imap):
* url-cid.el (url-cid-gnus, url-cid): Use with-current-buffer.
* erc.el (erc-display-line-1, erc-process-away):
* erc-truncate.el (erc-truncate-buffer-to-size):
Use with-current-buffer.
* term/ns-win.el (ns-scroll-bar-move, ns-face-at-pos):
* play/mpuz.el (mpuz-create-buffer):
* play/landmark.el (lm-prompt-for-move, lm-print-wts, lm-print-smell)
(lm-print-y,s,noise, lm-print-w0, lm-init):
* play/gomoku.el (gomoku-prompt-for-move):
* play/fortune.el (fortune-in-buffer):
* play/dissociate.el (dissociated-press):
* play/decipher.el (decipher-adjacency-list, decipher-display-regexp)
(decipher-analyze-buffer, decipher-stats-buffer,decipher-stats-buffer):
* mail/supercite.el (sc-eref-show):
* mail/smtpmail.el (smtpmail-send-it):
* mail/rmailsum.el (rmail-summary-next-labeled-message)
(rmail-summary-previous-labeled-message, rmail-summary-wipe)
(rmail-summary-undelete-many, rmail-summary-rmail-update)
(rmail-summary-goto-msg, rmail-summary-expunge)
(rmail-summary-get-new-mail, rmail-summary-search-backward)
(rmail-summary-add-label, rmail-summary-output-menu)
(rmail-summary-output-body):
* mail/rfc822.el (rfc822-addresses):
* mail/reporter.el (reporter-dump-variable, reporter-dump-state):
* mail/mailpost.el (post-mail-send-it):
* mail/hashcash.el (hashcash-generate-payment):
* mail/feedmail.el (feedmail-run-the-queue)
(feedmail-queue-send-edit-prompt-help-first)
(feedmail-send-it-immediately, feedmail-give-it-to-buffer-eater)
(feedmail-deduce-address-list):
* eshell/esh-ext.el (eshell-remote-command):
* eshell/em-unix.el (eshell-occur-mode-mouse-goto):
* emulation/viper-util.el (viper-glob-unix-files, viper-save-setting)
(viper-wildcard-to-regexp, viper-glob-mswindows-files)
(viper-save-string-in-file, viper-valid-marker):
* emulation/viper-keym.el (viper-toggle-key):
* emulation/viper-ex.el (ex-expand-filsyms, viper-get-ex-file)
(ex-edit, ex-global, ex-mark, ex-next-related-buffer, ex-quit)
(ex-get-inline-cmd-args, ex-tag, ex-command, ex-compile):
* emulation/viper-cmd.el (viper-exec-form-in-vi)
(viper-exec-form-in-emacs, viper-brac-function):
* emulation/viper.el (viper-delocalize-var):
* emulation/vip.el (vip-mode, vip-get-ex-token, vip-ex, vip-get-ex-pat)
(vip-get-ex-command, vip-get-ex-opt-gc, vip-get-ex-buffer)
(vip-get-ex-count, vip-get-ex-file, ex-edit, ex-global, ex-mark)
(ex-map, ex-unmap, ex-quit, ex-read, ex-tag, ex-command):
* emulation/vi.el (vi-switch-mode, vi-ex-cmd):
* emulation/edt.el (edt-electric-helpify):
* emulation/cua-rect.el (cua--rectangle-aux-replace):
* emulation/cua-gmrk.el (cua--insert-at-global-mark)
(cua--delete-at-global-mark, cua--copy-rectangle-to-global-mark)
(cua-indent-to-global-mark-column):
* calendar/diary-lib.el (calendar-mark-1):
* calendar/cal-hebrew.el (calendar-hebrew-mark-date-pattern):
Use with-current-buffer.
* emulation/viper.el (viper-delocalize-var): Use dolist.
2009-11-03 02:04:29 +00:00
|
|
|
(with-current-buffer errbuf
|
1986-09-18 22:28:40 +00:00
|
|
|
(goto-char (point-min))
|
|
|
|
(while (re-search-forward "\n\n* *" nil t)
|
|
|
|
(replace-match "; "))
|
|
|
|
(if (not (zerop (buffer-size)))
|
|
|
|
(error "Sending...failed to %s"
|
|
|
|
(buffer-substring (point-min) (point-max)))))))
|
|
|
|
(kill-buffer tembuf)
|
|
|
|
(if (bufferp errbuf)
|
|
|
|
(switch-to-buffer errbuf)))))
|
1992-05-30 22:12:04 +00:00
|
|
|
|
1997-06-22 18:57:55 +00:00
|
|
|
(provide 'mailpost)
|
|
|
|
|
2008-04-10 14:10:46 +00:00
|
|
|
;; arch-tag: 1f8ca085-60a6-4eac-8efb-69ffec2fa124
|
1992-05-30 22:12:04 +00:00
|
|
|
;;; mailpost.el ends here
|