[Mew-dist 10345] Re: IMAP環境で添付ファイルの保存ができない

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
1999年 8月 23日 (月) 15:00:48 JST


白井です(わかった)。

From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [Mew-dist 10341] Re: IMAP環境で添付ファイルの保存ができない
Message-ID: <19990823143627W.kazu at example.com>
Date: Mon, 23 Aug 1999 14:37:20 +0900

kazu> > 具体的には、imap環境で','を実行すると、ヘッダの Content-* と、
kazu> > 各パートのヘッダ Content-* がなくなり、最後の境界文字の後にこ
kazu> > れらなくなったヘッダ情報が出ているという形になっています。
kazu> 
kazu> このメールは SPC などで読むとちゃんとマルチパートと認識されるのでしょ
kazu> うか?
kazu> 
kazu> つまり、SPC では読めるけど、"y" ではエラーになるのかという質問です。

mew-insert-message で 終ったときの (point) が
insert-file-contents => (point-min)
imcat => (point-max)

なのが原因で、例えば、

mew-summary-display-asis() -> mew-insert-message()
-> mew-decode-rfc822-header() -> mew-decode-narrow-to-header()

と来たときに、mew-decode-narrow-to-header() で (point-max) から
(re-search-forward mew-eoh nil t) するので、おかしくなるようです。

というわけで、お手軽になおすには、パッチの様にすればいいと思いま
す。

# 朝方の coding-system の修正も含みます。これをやらないと、-asis
# したときに message を日本語として表示してくれないようです。
-------------- next part --------------
*** mew-func.el.orig	Fri Aug 20 14:15:44 1999
--- mew-func.el	Mon Aug 23 14:42:38 1999
***************
*** 249,255 ****
  (defmacro mew-insert-message (fld msg rcs size)
    (` (if (or (mew-folder-newsp (, fld)) (mew-folder-imapp (, fld)))
  	 (mew-piolet (, rcs) mew-cs-dummy
! 	   (mew-summary-im-start mew-prog-imcat (, fld) nil (, msg) nil))
         (mew-frwlet (, rcs) mew-cs-dummy
  	 (insert-file-contents (mew-expand-folder (, fld) (, msg))
  			       nil 0 (, size))))))
--- 249,255 ----
  (defmacro mew-insert-message (fld msg rcs size)
    (` (if (or (mew-folder-newsp (, fld)) (mew-folder-imapp (, fld)))
  	 (mew-piolet (, rcs) mew-cs-dummy
! 	   (mew-summary-im-start mew-prog-imcat (, fld) nil (, msg) nil nil (, rcs)))
         (mew-frwlet (, rcs) mew-cs-dummy
  	 (insert-file-contents (mew-expand-folder (, fld) (, msg))
  			       nil 0 (, size))))))
***************
*** 674,680 ****
  
  (defconst mew-im-boundary-begin "^---BEGIN-IMGET-MESSAGE---\n")
  
! (defun mew-summary-im-start (imprg src dsts msgs discard &optional arg)
    (let ((process-connection-type mew-connection-type2)
  	(imarg (if arg (cons arg mew-prog-im-arg) mew-prog-im-arg)))
      ;; dsts can be nil. disappears thanks to append
--- 674,680 ----
  
  (defconst mew-im-boundary-begin "^---BEGIN-IMGET-MESSAGE---\n")
  
! (defun mew-summary-im-start (imprg src dsts msgs discard &optional arg rcs)
    (let ((process-connection-type mew-connection-type2)
  	(imarg (if arg (cons arg mew-prog-im-arg) mew-prog-im-arg)))
      ;; dsts can be nil. disappears thanks to append
***************
*** 688,695 ****
  					    imprg (current-buffer) imprg
  					    (format "--src=%s" src)
  					    (append imarg dsts msgs)))
!     (mew-set-process-cs mew-summary-buffer-process
! 			mew-cs-text-for-read mew-cs-dummy)
      (if discard
  	(set-process-filter mew-summary-buffer-process 'mew-summary-im-filter1)
        (set-process-filter mew-summary-buffer-process 'mew-summary-im-filter2))
--- 688,698 ----
  					    imprg (current-buffer) imprg
  					    (format "--src=%s" src)
  					    (append imarg dsts msgs)))
!     (if rcs
! 	(mew-set-process-cs mew-summary-buffer-process
! 			    rcs mew-cs-dummy)
!       (mew-set-process-cs mew-summary-buffer-process
! 			  mew-cs-text-for-read mew-cs-dummy))
      (if discard
  	(set-process-filter mew-summary-buffer-process 'mew-summary-im-filter1)
        (set-process-filter mew-summary-buffer-process 'mew-summary-im-filter2))
***************
*** 701,707 ****
  	(sit-for 1)
  	;; accept-process-output or sleep-for is not enough
  	(discard-input)))
!     (if (not discard) (message "Caching a message ... done"))))
  
  ;; discard
  (defun mew-summary-im-filter1 (process string)
--- 704,711 ----
  	(sit-for 1)
  	;; accept-process-output or sleep-for is not enough
  	(discard-input)))
!     (if (not discard) (message "Caching a message ... done"))
!     (goto-char (point-min))))
  
  ;; discard
  (defun mew-summary-im-filter1 (process string)


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