猫でもわかるプログラミングの
第240章 テキストファイルを添付する
http://www.kumei.ne.jp/c_lang/sdk3/sdk_240.htm
を参考にしてVC++6、MFC、ダイアログベースでアプリ
を作成し、テキストファイルを添付したメールを
****@yahoo.co.jpへ送信してみたのですけど、
1:添付ファイルの内容が(Content-Disposition: attachment;
filename=ファイル名を記述しているにもかかわらず)メー
ル
本文に展開されてしまう。展開された添付ファイルの内容は、
英文と日本文ともに文字化けはしていない。
2:添付ファイルをダウンロードして開くと、英文は文字化け
しないが、日本文は文字化けしてしまう。
原因がよくわからないのですが、ここら辺の技術解説
やサンプルコードをご存知のかたいらっしゃらないで
しょうか。
問題解決にはなりませんが、プロバイダに原因あるケースもあるみたいですよ
アウトルック+gooで同じようなメール友達から届いたことありますよ
yahoo.co.jpのメール管理者にご協力願っても良いんじゃないですか
最小限でやりたいのなら自分でメールサーバー立ち上げてデバックするのがいいと
おもいますど
この手は出口までデバックしないと...
> 1:添付ファイルの内容が(Content-Disposition: attachment;
> filename=ファイル名を記述しているにもかかわらず)メー
> ル
> 本文に展開されてしまう。展開された添付ファイルの内容は、
> 英文と日本文ともに文字化けはしていない。
これは,
a.) メーラーで見た場合
b.) POPから得た(生の)データが既に展開されている
のどちらですか?
a.であれば,メーラーがそのように処理している可能性があります。
> 2:添付ファイルをダウンロードして開くと、英文は文字化け
> しないが、日本文は文字化けしてしまう。
ダウンロードして開くとは?
また,開くのに使ったアプリケーションはISO-2022-JP等の,
利用しているコードに対応していますか?
> ここら辺の技術解説
私も詳しくないのですが、RFC2045~2049にMultipurpose Internet Mail Extensions
(MIME)という文書があります。
>最小限でやりたいのなら自分でメールサーバー立ち上げてデバックするのがいいとおも
いますど
やはりそれが一番だと思いますけど、少しハードルが高いですね。
>a.) メーラーで見た場合
>b.) POPから得た(生の)データが既に展開されている
a.)です。ただメーラーではなく、*@yahoo.co.jpはweb-mailなので、IEでチェックし
ました。POPから得た(生の)データはチェックしていません。
>ダウンロードして開くとは?
*@yahoo.co.jpはweb-mailなので、添付ファイルは一度web上からローカルのHDDにダウ
ンロードしなくてはなりません。
>また,開くのに使ったアプリケーションはISO-2022-JP等の,利用しているコードに対応
していますか?
秀丸です。文字コードに詳しくないのですが、おそらく対応していると思います。
>私も詳しくないのですが、RFC2045~2049にMultipurpose Internet Mail Extensions
(MIME)という文書があります。
ありがとうございます。参照してみます。
他のメーラから送信した場合はテキストファイルを添付してもメール本文内に展開され
ず、また文字化けもしていないので、資料などをチェックして再度取り組んで見ます。
> >a.) メーラーで見た場合
> >b.) POPから得た(生の)データが既に展開されている
> a.)です。ただメーラーではなく、****@yahoo.co.jpはweb-mailなので、IEでチェックし
ました。POPから得た(生の)データはチェックしていません。
POPでちゃんと調べるべきでは?
text/plainは本文と同型式ですから,yahoo側のサーバープログラムが気を利かせて展開しているだけかもしれません。
ちなみに,text/plainの添付ファイルは,Application/Octet-Streamとして送るメーラーもあります。
> >また,開くのに使ったアプリケーションはISO-2022-JP等の,利用しているコードに対応
> していますか?
> 秀丸です。文字コードに詳しくないのですが、おそらく対応していると思います。
よく見たら,添付ファイルを送るコード,7bitコードしか送れませんがな。
ISO-2022-JPに変換して送るとか,
Base64で符号化して送るとか,そういう処理をしていない以上,
文字化けが起きても何もおかしくないです。
自己レスです。
Content-Type: text/plain; charset=ISO-2022-JP
を、
Content-Type: application/octet-stream; name=binary.lzh
のようにしたら解決しました。Base64でエンコードしてあります。
ご協力ありがとうございました。