* Re: mml-attach-file: Argument TYPE is not optional
2005-07-26 14:22 mml-attach-file: Argument TYPE is not optional Reiner Steib
@ 2005-07-27 1:37 ` Katsumi Yamaoka
0 siblings, 0 replies; 2+ messages in thread
From: Katsumi Yamaoka @ 2005-07-27 1:37 UTC (permalink / raw)
[-- Attachment #1: Type: text/plain, Size: 1370 bytes --]
>>>>> In <v9ack9lkaa.fsf@marauder.physik.uni-ulm.de> Reiner Steib wrote:
> the doc string of `mml-attach-file' says that TYPE is optional:
And also for `mml-attach-external'.
[...]
> After evaluating (mml-attach-file "/tmp/ste/gnus/test-file-1.txt") in
> a message buffer, I get:
>| <# part filename="/tmp/ste/gnus/test-file-1.txt" disposition=attachment>
>| <# /part>
> Note: type="text/plain" is not specified.
It is the same in the case where `mml-attach-external' is used.
> When sending the message, I get the backtrace listed below[1].
Aren't you talking about `mml-attach-external'? Though I couldn't
reproduce the error because the type defaults to text/plain for the <#
part ...>s internally in `mml-generate-mime-1', I think it isn't good
that Gnus doesn't add the Content-Type MIME header to the part anyway,
and the default type should be application/octet-stream if it cannot
be guessed.
> I'm not sure about the best way to fix this problem:
> (1) Make TYPE in `mml-attach-file' mandatory.
> (2) Set Content-Type in `mml-generate-mime-1' appropriately if no
> type=".../..." is specified.
> Patch for solution (2):
[...]
> Opinions? Unless there are other suggestion, I'll install (2).
I vote to (2). Here're patches for the v5-10 branch and for the
trunk, which enable to add the Content-Type header for the <#
part ...>s as well.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v5-10.patch --]
[-- Type: text/x-patch, Size: 3055 bytes --]
--- mml.el~ 2005-07-24 21:54:30 +0000
+++ mml.el 2005-07-27 01:34:21 +0000
@@ -400,9 +400,12 @@
(mml-tweak-part cont)
(cond
((or (eq (car cont) 'part) (eq (car cont) 'mml))
- (let ((raw (cdr (assq 'raw cont)))
- coded encoding charset filename type flowed)
- (setq type (or (cdr (assq 'type cont)) "text/plain"))
+ (let* ((raw (cdr (assq 'raw cont)))
+ (filename (cdr (assq 'filename cont)))
+ (type (or (cdr (assq 'type cont))
+ (and filename (mm-default-file-encoding filename))
+ "application/octet-stream"))
+ coded encoding charset flowed)
(if (and (not raw)
(member (car (split-string type "/")) '("text" "message")))
(progn
@@ -414,7 +417,7 @@
(cond
((cdr (assq 'buffer cont))
(insert-buffer-substring (cdr (assq 'buffer cont))))
- ((and (setq filename (cdr (assq 'filename cont)))
+ ((and filename
(not (equal (cdr (assq 'nofile cont)) "yes")))
(let ((coding-system-for-read charset))
(mm-insert-file-contents filename)))
@@ -475,7 +478,7 @@
(insert (with-current-buffer (cdr (assq 'buffer cont))
(mm-with-unibyte-current-buffer
(buffer-string)))))
- ((and (setq filename (cdr (assq 'filename cont)))
+ ((and filename
(not (equal (cdr (assq 'nofile cont)) "yes")))
(let ((coding-system-for-read mm-binary-coding-system))
(mm-insert-file-contents filename nil nil nil nil t)))
@@ -516,15 +519,19 @@
"access-type=url"))
(when parameters
(mml-insert-parameter-string
- cont '(expiration size permission))))
- (insert "\n\n")
- (insert "Content-Type: " (cdr (assq 'type cont)) "\n")
- (insert "Content-ID: " (message-make-message-id) "\n")
- (insert "Content-Transfer-Encoding: "
- (or (cdr (assq 'encoding cont)) "binary"))
- (insert "\n\n")
- (insert (or (cdr (assq 'contents cont))))
- (insert "\n"))
+ cont '(expiration size permission)))
+ (insert "\n\n")
+ (insert "Content-Type: "
+ (or (cdr (assq 'type cont))
+ (and name (mm-default-file-encoding name))
+ "application/octet-stream")
+ "\n")
+ (insert "Content-ID: " (message-make-message-id) "\n")
+ (insert "Content-Transfer-Encoding: "
+ (or (cdr (assq 'encoding cont)) "binary"))
+ (insert "\n\n")
+ (insert (or (cdr (assq 'contents cont))))
+ (insert "\n")))
((eq (car cont) 'multipart)
(let* ((type (or (cdr (assq 'type cont)) "mixed"))
(mml-generate-default-type (if (equal type "digest")
@@ -560,7 +567,8 @@
(message-options-set 'message-sender sender))
(if (setq recipients (cdr (assq 'recipients cont)))
(message-options-set 'message-recipients recipients))
- (let ((style (mml-signencrypt-style (first (or sign-item encrypt-item)))))
+ (let ((style (mml-signencrypt-style
+ (first (or sign-item encrypt-item)))))
;; check if: we're both signing & encrypting, both methods
;; are the same (why would they be different?!), and that
;; the signencrypt style allows for combined operation.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: trunk.patch --]
[-- Type: text/x-patch, Size: 2669 bytes --]
--- mml.el~ 2005-07-24 21:50:41 +0000
+++ mml.el 2005-07-27 01:34:21 +0000
@@ -404,11 +404,14 @@
(mml-tweak-part cont)
(cond
((or (eq (car cont) 'part) (eq (car cont) 'mml))
- (let ((raw (cdr (assq 'raw cont)))
- type charset coding filename encoding flowed coded)
- (setq type (or (cdr (assq 'type cont)) "text/plain")
- charset (cdr (assq 'charset cont))
- coding (mm-charset-to-coding-system charset))
+ (let* ((raw (cdr (assq 'raw cont)))
+ (filename (cdr (assq 'filename cont)))
+ (type (or (cdr (assq 'type cont))
+ (and filename (mm-default-file-encoding filename))
+ "application/octet-stream"))
+ (charset (cdr (assq 'charset cont)))
+ (coding (mm-charset-to-coding-system charset))
+ encoding flowed coded)
(cond ((eq coding 'ascii)
(setq charset nil
coding nil))
@@ -421,7 +424,7 @@
(cond
((cdr (assq 'buffer cont))
(insert-buffer-substring (cdr (assq 'buffer cont))))
- ((and (setq filename (cdr (assq 'filename cont)))
+ ((and filename
(not (equal (cdr (assq 'nofile cont)) "yes")))
(let ((coding-system-for-read coding))
(mm-insert-file-contents filename)))
@@ -482,7 +485,7 @@
(insert (with-current-buffer (cdr (assq 'buffer cont))
(mm-with-unibyte-current-buffer
(buffer-string)))))
- ((and (setq filename (cdr (assq 'filename cont)))
+ ((and filename
(not (equal (cdr (assq 'nofile cont)) "yes")))
(let ((coding-system-for-read mm-binary-coding-system))
(mm-insert-file-contents filename nil nil nil nil t))
@@ -527,15 +530,19 @@
"access-type=url"))
(when parameters
(mml-insert-parameter-string
- cont '(expiration size permission))))
- (insert "\n\n")
- (insert "Content-Type: " (cdr (assq 'type cont)) "\n")
- (insert "Content-ID: " (message-make-message-id) "\n")
- (insert "Content-Transfer-Encoding: "
- (or (cdr (assq 'encoding cont)) "binary"))
- (insert "\n\n")
- (insert (or (cdr (assq 'contents cont))))
- (insert "\n"))
+ cont '(expiration size permission)))
+ (insert "\n\n")
+ (insert "Content-Type: "
+ (or (cdr (assq 'type cont))
+ (and name (mm-default-file-encoding name))
+ "application/octet-stream")
+ "\n")
+ (insert "Content-ID: " (message-make-message-id) "\n")
+ (insert "Content-Transfer-Encoding: "
+ (or (cdr (assq 'encoding cont)) "binary"))
+ (insert "\n\n")
+ (insert (or (cdr (assq 'contents cont))))
+ (insert "\n")))
((eq (car cont) 'multipart)
(let* ((type (or (cdr (assq 'type cont)) "mixed"))
(mml-generate-default-type (if (equal type "digest")
^ permalink raw reply [flat|nested] 2+ messages in thread