メールの本文が添付ファイルになっちゃう??
2006年 01月 24日
今日はメールのエンコードに関するお勉強。
自宅のMacから、添付ファイル付きのメールを送ったんですよ。そしたら、添付と一緒にメールの本文までもがテキスト形式のファイル添付になってしまってたらしい。
そういえば、僕も職場のOutlookで、似たようなメールを受け取ったことがある。
というわけで、この不具合についていろいろ調べてみた。
で、結局はエンコーディングとデコーディングがうまくいってないのが不具合の原因、ということらしいです。
メールのエンコーディングというのは、データを規則にのっとって符号化することによって、様々なプラットフォームが混在するインターネットでのデータのやり取りをスムーズにしようとするもの。エンクリプションも同じくデータのやり取りに使われるが、こちらはデータを暗号化して情報の漏洩を防ぐために使われるので、エンコードとは異なる。
エンコードの形式としては、MIME、Uuencode、Base64、Quoted-Printable、Binhex、yEncなど様々なものがあるが、通常のメールはMIMEで全体をエンコードして、添付ファイルにはBase64が使われることが多い、と。
こんな感じで、ニュアンスは合ってるかなぁ?
さて、Macで送った僕のメールも、「エンコード」されて送信先に届けられ、そこで「デコード」されてメッセージが復元された。ちなみに、僕が送ったメールは、「テキスト」「添付」「テキスト」という順番だったので、ヘッダーはこんな風になってた。
--Apple-Mail-4-795207516
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
charset=ISO-2022-JP;
format=flowed
--Apple-Mail-4-795207516
Content-Transfer-Encoding: base64
Content-Type: application/zip;
x-unix-mode=0644;
name="file_name.zip"
Content-Disposition: attachment;
filename=tomaki_200602.zip
--Apple-Mail-4-795207516
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
charset=ISO-2022-JP;
format=flowed
最初のテキスト部分は正常にデコードされ、次のbase64の添付ファイルも問題なく添付ファイルとして認識された。ところが、それに続くテキスト部分のデコーディングに失敗したため、その部分がテキストファイルの添付として処理されてしまったようだ。
ちなみに、このテキストファイルのファイル名は「ATT00000.txt(数字は可変)」となっていて、これはMicrosoft Exchange Serverでファイルのコンバージョンに失敗した時に自動生成されるファイルとのこと。つまり、悪いのはMicrosoftなのか??
にわか勉強なのでどこまで合っているか分からないが、まぁとりあえず納得。
今回の「お勉強」のソースはこちら。
Decoding Internet Attachments - A Tutorial by Michael Santovec
http://pages.prodigy.net/michael_santovec/decode.htm
Microsoft サポートオンライン
http://support.microsoft.com/?kbid=146473
自宅のMacから、添付ファイル付きのメールを送ったんですよ。そしたら、添付と一緒にメールの本文までもがテキスト形式のファイル添付になってしまってたらしい。
そういえば、僕も職場のOutlookで、似たようなメールを受け取ったことがある。
というわけで、この不具合についていろいろ調べてみた。
で、結局はエンコーディングとデコーディングがうまくいってないのが不具合の原因、ということらしいです。
メールのエンコーディングというのは、データを規則にのっとって符号化することによって、様々なプラットフォームが混在するインターネットでのデータのやり取りをスムーズにしようとするもの。エンクリプションも同じくデータのやり取りに使われるが、こちらはデータを暗号化して情報の漏洩を防ぐために使われるので、エンコードとは異なる。
エンコードの形式としては、MIME、Uuencode、Base64、Quoted-Printable、Binhex、yEncなど様々なものがあるが、通常のメールはMIMEで全体をエンコードして、添付ファイルにはBase64が使われることが多い、と。
こんな感じで、ニュアンスは合ってるかなぁ?
さて、Macで送った僕のメールも、「エンコード」されて送信先に届けられ、そこで「デコード」されてメッセージが復元された。ちなみに、僕が送ったメールは、「テキスト」「添付」「テキスト」という順番だったので、ヘッダーはこんな風になってた。
--Apple-Mail-4-795207516
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
charset=ISO-2022-JP;
format=flowed
--Apple-Mail-4-795207516
Content-Transfer-Encoding: base64
Content-Type: application/zip;
x-unix-mode=0644;
name="file_name.zip"
Content-Disposition: attachment;
filename=tomaki_200602.zip
--Apple-Mail-4-795207516
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
charset=ISO-2022-JP;
format=flowed
最初のテキスト部分は正常にデコードされ、次のbase64の添付ファイルも問題なく添付ファイルとして認識された。ところが、それに続くテキスト部分のデコーディングに失敗したため、その部分がテキストファイルの添付として処理されてしまったようだ。
ちなみに、このテキストファイルのファイル名は「ATT00000.txt(数字は可変)」となっていて、これはMicrosoft Exchange Serverでファイルのコンバージョンに失敗した時に自動生成されるファイルとのこと。つまり、悪いのはMicrosoftなのか??
にわか勉強なのでどこまで合っているか分からないが、まぁとりあえず納得。
今回の「お勉強」のソースはこちら。
Decoding Internet Attachments - A Tutorial by Michael Santovec
http://pages.prodigy.net/michael_santovec/decode.htm
Microsoft サポートオンライン
http://support.microsoft.com/?kbid=146473
by t0maki
| 2006-01-24 12:03
| 乱文・雑文
|
Comments(0)