[Mew-dist 16125] Re: 巨大メイルの送信

KOIE Hidetaka ( 鯉江英隆 ) hide at example.com
2001年 1月 31日 (水) 16:35:59 JST


 From:       Kazu Yamamoto (山本和彦) <kazu at example.com>
 Subject:    [Mew-dist 16124] Re: 巨大メイルの送信
 Date:       Wed, 31 Jan 2001 07:54:17 +0900
 Message-Id: <20010131.072948.48443571.kazu at example.com>

  | > ブロックしているのは mew-smtp-command-content() の
  | > (process-send-region pro (point-min) (point-max)) だと思うのですが
  | > これを小分けにして送信するようにしたらいけそうな気がしてます。
  | 
  | 実験してみて下さいな。

どうもスキルが足りてないようで、おもったように動きませんでした。

(setq mew-smtp-fsm
  '(("greeting"     ("220" . "ehlo"))
    ("ehlo"         ("250" . "auth") (t . "helo"))
    ;;
    ("auth"         ("250" . "mail-from"))
    ("cram-md5"     ("334" . "pwd-cram-md5") (t . "wpwd"))
    ("pwd-cram-md5" ("235" . "mail-from") (t . "wpwd"))
    ("login"        ("334" . "pwd-login") (t . "wpwd"))
    ("pwd-login"    ("235" . "mail-from") (t . "wpwd"))
    ("plain"        ("235" . "mail-from") (t . "wpwd"))
    ;;
    ("helo"         ("250" . "mail-from"))
    ("mail-from"    ("250" . "rcpt-to"))
    ("rcpt-to"      ("250" . "data"))
    ("data"         ("354" . "content"))
    ("content"      ("250" . "done") (t . "content"))      ;; <==
    ("done"         ("250" . "noop"))))

(defun mew-smtp-command-data (pro pnm)
  (widen)
  ;;以下はmew-smtp-command-contentsから移ってきました
  (clear-visited-file-modtime)
  (goto-char (point-max))
  (if (not (bolp)) (insert "\n"))
  (goto-char (point-min))
  (while (re-search-forward "^\\." nil t)
    (insert ".")
    (forward-line))
  (if (string= mew-cs-eol "\r\n")
      (progn
        (goto-char (point-min))
        (while (search-forward "\n" nil t) (replace-match "\r\n" nil t))))
  (set-buffer-modified-p nil)
  (setq xxxpoint (point-min))
  (setq xxxtimer nil)
  (process-send-string pro (format "DATA%s" mew-cs-eol)))

(defun mew-smtp-command-content (pro pnm)
  (if (< xxxpoint (point-max))
      (progn
        (setq xxxtimer
              (run-at-time "0 sec" nil
                           'mew-smtp-command-content pro pnm))
        ;;(message "send: %d" xxxpoint)
        (process-send-region pro xxxpoint (1+ xxxpoint))
        (setq xxxpoint (1+ xxxpoint)))
    (cancel-timer xxxtimer)
    (process-send-string pro (format ".%s" mew-cs-eol))))


#SMTPをバッファリングして中継するSSH似のコマンドをつくった方が早かったか?

--
KOIE Hidetaka 鯉江英隆 <hide at example.com>



Mew-dist メーリングリストの案内