Annotation of 43BSDReno/contrib/emacs-18.55/lisp/mailpost.el, revision 1.1.1.1

1.1       root        1: ;;
                      2: ;; P O S T . E L
                      3: ;;
                      4: ;; Yet another mail interface.  this for the rmail system to provide
                      5: ;;  the missing sendmail interface on systems without /usr/lib/sendmail,
                      6: ;;   but with /usr/uci/post.
                      7: ;;
                      8: ;; created by: Gary Delp <delp at huey.Udel.Edu>
                      9: ;;             Mon Jan 13 14:45:12 1986
                     10: ;;
                     11: ;;
                     12: 
                     13: ;; (setq send-mail-function 'post-mail-send-it)
                     14: 
                     15: (defun post-mail-send-it ()
                     16:   "\
                     17: the MH -post interface for rmail-mail to call.
                     18: to use it, include (setq send-mail-function 'post-mail-send-it) in site-init."
                     19:   (let ((errbuf (if mail-interactive
                     20:                    (generate-new-buffer " post-mail errors")
                     21:                  0))
                     22:        (temfile "/tmp/,rpost")
                     23:        (tembuf (generate-new-buffer " post-mail temp"))
                     24:        (case-fold-search nil)
                     25:        delimline
                     26:        (mailbuf (current-buffer)))
                     27:     (unwind-protect
                     28:        (save-excursion
                     29:          (set-buffer tembuf)
                     30:          (erase-buffer)
                     31:          (insert-buffer-substring mailbuf)
                     32:          (goto-char (point-max))
                     33:          ;; require one newline at the end.
                     34:          (or (= (preceding-char) ?\n)
                     35:              (insert ?\n))
                     36:          ;; Change header-delimiter to be what post-mail expects.
                     37:          (goto-char (point-min))
                     38:          (search-forward (concat "\n" mail-header-separator "\n"))
                     39:          (replace-match "\n\n")
                     40:          (backward-char 1)
                     41:          (setq delimline (point-marker))
                     42:          (if mail-aliases
                     43:              (expand-mail-aliases (point-min) delimline))
                     44:          (goto-char (point-min))
                     45:          ;; ignore any blank lines in the header
                     46:          (while (and (re-search-forward "\n\n\n*" delimline t)
                     47:                      (< (point) delimline))
                     48:            (replace-match "\n"))
                     49:          ;; Find and handle any FCC fields.
                     50:          (let ((case-fold-search t))
                     51:            (goto-char (point-min))
                     52:            (if (re-search-forward "^FCC:" delimline t)
                     53:                (mail-do-fcc delimline))
                     54:            ;; If there is a From and no Sender, put it a Sender.
                     55:            (goto-char (point-min))
                     56:            (and (re-search-forward "^From:"  delimline t)
                     57:                 (not (save-excursion
                     58:                        (goto-char (point-min))
                     59:                        (re-search-forward "^Sender:" delimline t)))
                     60:                 (progn
                     61:                   (forward-line 1)
                     62:                   (insert "Sender: " (user-login-name) "\n")))
                     63:            ;; don't send out a blank subject line
                     64:            (goto-char (point-min))
                     65:            (if (re-search-forward "^Subject:[ \t]*\n" delimline t)
                     66:                (replace-match ""))
                     67:            (if mail-interactive
                     68:                (save-excursion
                     69:                  (set-buffer errbuf)
                     70:                  (erase-buffer))))
                     71:          (write-file (setq temfile (make-temp-name temfile)))
                     72:          (set-file-modes temfile 384)
                     73:          (apply 'call-process
                     74:                 (append (list (if (boundp 'post-mail-program)
                     75:                                   post-mail-program
                     76:                                 "/usr/uci/lib/mh/post")
                     77:                               nil errbuf nil
                     78:                               "-nofilter" "-msgid")
                     79:                         (if mail-interactive '("-watch") '("-nowatch"))
                     80:                         (list temfile)))
                     81:          (if mail-interactive
                     82:              (save-excursion
                     83:                (set-buffer errbuf)
                     84:                (goto-char (point-min))
                     85:                (while (re-search-forward "\n\n* *" nil t)
                     86:                  (replace-match "; "))
                     87:                (if (not (zerop (buffer-size)))
                     88:                    (error "Sending...failed to %s"
                     89:                           (buffer-substring (point-min) (point-max)))))))
                     90:       (kill-buffer tembuf)
                     91:       (if (bufferp errbuf)
                     92:          (switch-to-buffer errbuf)))))

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.