1;;; nngateway.el --- posting news via mail gateways 2 3;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 4;; 2005, 2006, 2007 Free Software Foundation, Inc. 5 6;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 7;; Keywords: news, mail 8 9;; This file is part of GNU Emacs. 10 11;; GNU Emacs is free software; you can redistribute it and/or modify 12;; it under the terms of the GNU General Public License as published by 13;; the Free Software Foundation; either version 2, or (at your option) 14;; any later version. 15 16;; GNU Emacs is distributed in the hope that it will be useful, 17;; but WITHOUT ANY WARRANTY; without even the implied warranty of 18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19;; GNU General Public License for more details. 20 21;; You should have received a copy of the GNU General Public License 22;; along with GNU Emacs; see the file COPYING. If not, write to the 23;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 24;; Boston, MA 02110-1301, USA. 25 26;;; Commentary: 27 28;;; Code: 29 30(eval-when-compile (require 'cl)) 31(require 'nnoo) 32(require 'message) 33 34(nnoo-declare nngateway) 35 36(defvoo nngateway-address nil 37 "Address of the mail-to-news gateway.") 38 39(defvoo nngateway-header-transformation 'nngateway-simple-header-transformation 40 "Function to be called to rewrite the news headers into mail headers. 41It is called narrowed to the headers to be transformed with one 42parameter -- the gateway address.") 43 44;;; Interface functions 45 46(nnoo-define-basics nngateway) 47 48(deffoo nngateway-open-server (server &optional defs) 49 (if (nngateway-server-opened server) 50 t 51 (unless (assq 'nngateway-address defs) 52 (setq defs (append defs (list (list 'nngateway-address server))))) 53 (nnoo-change-server 'nngateway server defs))) 54 55(deffoo nngateway-request-post (&optional server) 56 (when (or (nngateway-server-opened server) 57 (nngateway-open-server server)) 58 ;; Rewrite the header. 59 (let ((buf (current-buffer))) 60 (with-temp-buffer 61 (insert-buffer-substring buf) 62 (message-narrow-to-head) 63 (funcall nngateway-header-transformation nngateway-address) 64 (goto-char (point-max)) 65 (insert mail-header-separator "\n") 66 (widen) 67 (let (message-required-mail-headers) 68 (funcall (or message-send-mail-real-function 69 message-send-mail-function))) 70 t)))) 71 72;;; Internal functions 73 74(defun nngateway-simple-header-transformation (gateway) 75 "Transform the headers to use GATEWAY." 76 (let ((newsgroups (mail-fetch-field "newsgroups"))) 77 (message-remove-header "to") 78 (message-remove-header "cc") 79 (goto-char (point-min)) 80 (insert "To: " (nnheader-replace-chars-in-string newsgroups ?. ?-) 81 "@" gateway "\n"))) 82 83(defun nngateway-mail2news-header-transformation (gateway) 84 "Transform the headers for sending to a mail2news gateway." 85 (message-remove-header "to") 86 (message-remove-header "cc") 87 (goto-char (point-min)) 88 (insert "To: " gateway "\n")) 89 90(nnoo-define-skeleton nngateway) 91 92(provide 'nngateway) 93 94;;; arch-tag: f7ecb92e-b10c-43d5-9a9b-1314233341fc 95;;; nngateway.el ends here 96