- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!Mail.appの添付ファイルをMewで読む
Mewを使ってメールを読んでいると,
macOSのMail.appを使ってる人からの添付ファイルが読めないことがあった.
メール本文を全部保存して対象のMIMEパートを取得,
decodeしてファイルを取り出していたのですが,ちょっと不便.
中身をみてみると,
boundary="Apple-Mail=_126A74B5-1B5D-4DB5-8B6B-2CB862261D4C"
--Apple-Mail=_126A74B5-1B5D-4DB5-8B6B-2CB862261D4C
--Apple-Mail=_126A74B5-1B5D-4DB5-8B6B-2CB862261D4C
Content-Type: multipart/related; type="text/html"; boundary="Apple-Mail=_4011702D-3406-4339-AAD5-3772513E8D44"
--Apple-Mail=_4011702D-3406-4339-AAD5-3772513E8D44
--Apple-Mail=_4011702D-3406-4339-AAD5-3772513E8D44
--Apple-Mail=_4011702D-3406-4339-AAD5-3772513E8D44--
--Apple-Mail=_126A74B5-1B5D-4DB5-8B6B-2CB862261D4C--
こんな感じで,multipartが階層的になっていた.
階層的なのはいいとして,multipart/relatedというのをMewが解析できてなさそう.
Mew-6.8のコードをみてみると mew-const.el に,
(defconst mew-ct-mla "Multipart/Alternative")
という定義があったので,これを,
(defconst mew-ct-mla "multipart/related")
に変更してみた.
これで,問題のメールの添付ファイルにMewでアクセスできるようになった,
よかった.
"Multipart/Alternative"は同じように扱える方がいいようなあ,と,
mew-ct-mlrという名前で"multipart/related"を定義して,
mew-ct-mlrが使われてるところでパラにできるようにしてみた.
が,これだと上手く動かない...継続調査だなあ.
変更箇所は次の通り.
diff --git a/mew-const.el b/mew-const.el
index ba6e97e..57863e9 100644
--- a/mew-const.el
+++ b/mew-const.el
@@ -108,6 +108,7 @@
(defconst mew-ct-sts "Message/Delivery-Status")
(defconst mew-ct-mlm "Multipart/Mixed")
(defconst mew-ct-mla "Multipart/Alternative")
+(defconst mew-ct-mlr "multipart/related")
(defconst mew-ct-mls "Multipart/Signed")
(defconst mew-ct-mle "Multipart/Encrypted")
(defconst mew-ct-mld "Multipart/Digest")
diff --git a/mew-decode.el b/mew-decode.el
index cc74a74..841281b 100644
--- a/mew-decode.el
+++ b/mew-decode.el
@@ -885,7 +885,7 @@ Return a part syntax after moving the beginning of the content body."
(boundary (mew-syntax-get-param ctl "boundary"))
(count 0)
(parts []) part
- (use-alt (and (mew-dinfo-get-use-alt) (string= ct mew-ct-mla)))
+ (use-alt (and (mew-dinfo-get-use-alt) (or (string= ct mew-ct-mla) (string= ct mew-ct-mlr))))
prefpart lastpref lastatpref
bregex start break)
(unless boundary
diff --git a/mew-syntax.el b/mew-syntax.el
index 9a6ea2f..6784dbd 100644
--- a/mew-syntax.el
+++ b/mew-syntax.el
@@ -634,7 +634,7 @@ system."
(cnt mew-syntax-magic)
(num 1)
(len (length syntax))
- (mew-inherit-alt (string= mew-ct-mla ct))
+ (mew-inherit-alt (or (string= mew-ct-mla ct) (string= mew-ct-mlr ct)))
strpart subsyntax)
;; multipart itself is displayed only when encoding.
(if dec
diff --git a/mew-vars2.el b/mew-vars2.el
index 4f1f5dd..7f13e9f 100644
--- a/mew-vars2.el
+++ b/mew-vars2.el
@@ -213,7 +213,7 @@ for privacy reasons.")
(mew-case-equal ct mew-ct-msg))) ;; xxx mew-ct-messagep?
(defvar mew-mime-content-type-multipart-list
- `(,mew-ct-mlm ,mew-ct-mla)
+ `(,mew-ct-mlm ,mew-ct-mlr)
"Candidate of 'Content-Type: Multipart/' when CT: is changed
in draft buffer.")