プログラムから gmail アカウントに件名に漢字を含むメールを送信しようとしていますが、件名が????
. 件名は次のようにエンコードされます。
=?utf-8?B?Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=?=
エンコーディングに何か問題がありますか?心に留めておかなければならないことはありますか?メールの本文にも漢字が含まれていますが、問題なく表示されます。本体のエンコードにはbase64を使用しています。
プログラムから gmail アカウントに件名に漢字を含むメールを送信しようとしていますが、件名が????
. 件名は次のようにエンコードされます。
=?utf-8?B?Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=?=
エンコーディングに何か問題がありますか?心に留めておかなければならないことはありますか?メールの本文にも漢字が含まれていますが、問題なく表示されます。本体のエンコードにはbase64を使用しています。
この質問への回答に関心がある方のために説明すると、この文字列はRFC2047 に従ってエンコードされた MIME ヘッダーです。
=?utf-8?B?Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=?=
UTF-8 文字セットを使用することを意味し、B
Base 64 エンコーディングを意味します。
PHP では、 を使用しますiconv_mime_decode
。
=?utf-8?B?Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=?=
は base64 でエンコードされ、string-buffer (base64 でデコードされた後) は utf-8 でエンコードされます。
でデコードできますpython
:
>>> from base64 import b64decode
>>> b64decode(b'Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=').decode('utf-8')
'FW: 請幫我給 與你起來的同事'
また、Pythonで:
>>> from email.header import decode_header
>>> decode_header('=?utf-8?B?Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=?=')
[(b'FW: \xe8\xab\x8b\xe5\xb9\xab\xe6\x88\x91\xe7\xb5\xa6 \xe8\x88\x87\xe4\xbd\xa0\xe8\xb5\xb7\xe4\xbe\x86\xe7\x9a\x84\xe5\x90\x8c\xe4\xba\x8b', 'utf-8')]
>>> _[0][0].decode(_[0][1])
'FW: 請幫我給 與你起來的同事'
またはbash
(おそらくパイプする必要がありますiconv
):
~ $ echo Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos= | base64 -d
FW: 請幫我給 與你起來的同事