MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

文字コード:UTF-8、エンコード:quoted-printableのメール本文が文字化け
https://forums.mozillazine.jp/viewtopic.php?f=3&t=18122
ページ 11

作成者:  ry_tokucha [ 2020年8月19日(水) 21:23 ]
記事の件名:  文字コード:UTF-8、エンコード:quoted-printableのメール本文が文字化け

Windows10 (64bit)
Thunderbird 68.11.1(64bit)

---メッセージソース抜粋---
Content-Transfer-Encoding: quoted-printable
Content-Type: text; charset=UTF-8
----------------------------

件名の通り、
UTf-8, quoted-printableで受診したメールの本文が以下のように表示されます。

----------本文抜粋---------
=E2=80=BB=E6=9C=AC=E3=83=A1=E3=83=BC=E3=83=AB=E3=81=AF=E9=80=81=E4=BF=A1=
=E5=B0=82=E7=94=A8=E3=81=A7=E3=81=99=E3=80=82
----------------------------

quoted-printableでエンコードされた本文が、
デコードされずに表示されているように見受けられます。

どのような設定にすれば、本文を正しく表示できるのでしょうか?

ご教示いただきたいです。

作成者:  EarlgreyTea [ 2020年8月19日(水) 22:50 ]
記事の件名:  Re: 文字コード:UTF-8、エンコード:quoted-printableのメール本文が文字化け

ry_tokucha さんが書きました:
Content-Transfer-Encoding: quoted-printable
Content-Type: text; charset=UTF-8

この「Content-Type: text;」というのは正しくありません。
プレーンテキストなら text/plain で、HTMLテキストなら text/html です。
メディアタイプは、必ず「トップレベルタイプ/サブタイプ」の形式になっている必要があります。
このメールはどのメールソフトから送信されたものでしょうか。
いくつか調べてみましたが、同様なヘッダー情報を出力するものはありませんでした。

該当メールを eml ファイルとして保存し、それをテキストエディターで text → text/plain に編集して保存、それを Thunderbird のフォルダーにドロップしてインポートすれば、本文を読めるはずです。

作成者:  ry_tokucha [ 2020年8月20日(木) 10:34 ]
記事の件名:  Re: 文字コード:UTF-8、エンコード:quoted-printableのメール本文が文字化け

>EarlgreyTea
ご回答ありがとうございます。

本メールは SendGrid Web API V3 から送信されています。
https://sendgrid.kke.co.jp/docs/API_Ref ... index.html

SendGrid側の送信設定に問題がありそうですね。もう少し調べてみます。
https://sendgrid.kke.co.jp/blog/?p=1521

作成者:  EarlgreyTea [ 2020年8月20日(木) 22:21 ]
記事の件名:  Re: 文字コード:UTF-8、エンコード:quoted-printableのメール本文が文字化け

ry_tokucha さんが書きました:
本メールは SendGrid Web API V3 から送信されています

クラウドメール配信サービスの SendGrid を使って送信したメールで、その SendGrid の利用にあたっては Web API v3 を使用、ということでしょうか。
メール送信ということですと V3 Mail Send API でしょうか。
この API を直接叩いていたのだとすれば、送信メールのヘッダー情報はAPI呼び出し側で設定すべきことであり、すなわちサービス利用者側の設定間違いということになるかと思います。

もし、ライブラリを用いていて意図しない設定がされたということであれば、SendGrid のサポートに問い合わせて解決することになるでしょう。

ただ、メール送信側の問題とは別に、text だけのメディアタイプを text/plain として処理できていないのは Thunderbird のバグとして指摘してもいい気がします。

RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types
4.1.4. Unrecognized Subtypes より引用
引用:
Unrecognized subtypes of "text" should be treated as subtype "plain" as long as the MIME implementation knows how to handle the charset.
Unrecognized subtypes which also specify an unrecognized charset should be treated as "application/octet- stream".

作成者:  EarlgreyTea [ 2020年8月23日(日) 23:36 ]
記事の件名:  Re: 文字コード:UTF-8、エンコード:quoted-printableのメール本文が文字化け

サブタイプ無しの "text" が指定された場合の挙動について調べてみました。

まず、下記2つの内容の .eml ファイルを用意します。
・bad_utf-8_quoted-printable.eml
コード:
To: hoge@mail.com
From: fuga@mail.com
Subject: bad utf-8 + quoted-printable
Date: Sun, 23 Aug 2020 23:00:00 +0900
MIME-Version: 1.0
Content-Type: text; charset=utf-8
Content-Transfer-Encoding: quoted-printable

=E3=81=93=E3=82=8C=E3=81=AF=E6=97=A5=E6=9C=AC=E8=AA=9E=E3=81=AE=E3=83=A1=
=E3=83=BC=E3=83=AB=E6=9C=AC=E6=96=87=E3=81=A7=E3=81=99
・bad_shift_jis_base64.eml
コード:
To: hoge@mail.com
From: fuga@mail.com
Subject: bad shift_jis + base64
Date: Sun, 23 Aug 2020 23:01:00 +0900
MIME-Version: 1.0
Content-Type: text; charset=shift_jis
Content-Transfer-Encoding: base64

grGC6oLNk/qWe4zqgsyDgYFbg4uWe5W2gsWCtw==

ちなみにどちらもエンコード前の本文は
コード:
これは日本語のメール本文です
です。

これらの .eml ファイルをIMAPアカウントを設定したThunderbirdにインポートし、IMAP同期でサーバーに送ったうえで他のメールソフトでも表示を確認しました。

結果は以下の通りです。
  • Thunderbird: すべてのバージョンにおいて、本文のソースをそのまま表示
  • Windows 10メール: デコードした本文を表示
  • Outlook: デコードした本文を表示
  • Sylpheed: デコードした本文を表示
  • Becky!: ヘッダーのソース表示となり、本文は未知のContent-Typeのため表示されない
  • EdMax: デコードした本文を表示

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/