dポイントプレゼントキャンペーン実施中!

メールのデコード処理のプログラムに不具合があるため、調査しています。

問題となっているメールは、

「quoted-printable」でエンコードされています。
また、デコード前の本文は下記のようになっています。

<本文>
**********************************
○○○株式会社
   山田太郎
   TEL xxx-xxxx-xxxx
   FAX xxx-xxxx-xxxx
**********************************

最後の"*"の後には改行はありません。

このメールが「quoted-printable」でエンコードされると

**********************************=

となり、末尾に"="が付与されます。

「quoted-printable」でエンコードされる場合は、
エンコード後の文字列長を76文字以下にする必要があるため、
"="が付与されることは、調べてわかったのですが、
上記の場合、76文字に満たないため、"="は不要かとおもいますが、
"="が何故付いてしまうのかわかりません。

ヘッダには、
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: quoted-printable
となっているため、「quoted-printable」でエンコードされていると判断しました。

何故エンコード後に"="が付与されてしまうのかを
わかる方、いらっしゃいませんでしょうか?

駄文で、申し訳ありませんが、よろしくお願いいたします。

A 回答 (1件)

> 上記の場合、76文字に満たないため、"="は不要かとおもいますが、


> "="が何故付いてしまうのかわかりません。

行末の"="は、76文字以上であることを表しているのではなく、
行末の改行が無効であることを表しています。

したがって、76文字以下でも行末に"="を入れてもかまいません。

エンコードされた最終行の
************=
の最後には改行が入っているのではないですか?
であれば、最後の"="と改行は無効である
(つまり改行なしで終わっている)
ことを表しており、正しいエンコードだと思います。

もしエンコードされた文字列の最後が"="だけで改行がないので
あれば、不正なエンコードだと思います。

以下のURLの解説がわかりやすいと思います。
http://tmotooka.hatenablog.jp/entry/20101219/129 …

この回答への補足

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

ちゃんと確認しないといけませんが、
エンコードされた最終行の
************=
の部分は、メーラーで文章を確認したときは改行がありませんでした。
ですので、何故=が付いてしまうのかがわからなくて困っていました。

ちなみに、最後が改行されている別のメールには、
エンコード後の最終行に=が付いていませんでした。

補足日時:2014/02/23 00:09
    • good
    • 0
この回答へのお礼

すみません。
私がご回答いただいた内容を少し勘違いしていました。
よくよく考えて、大変参考になりました。
困っていたので、大変感謝しております。
ありがとうございました。

お礼日時:2014/02/24 21:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!