ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4161496 メールの添付ファイルの表示
質問者:fleet1234 受信メールをホームページで表示して閲覧するプログラムを作成しているのですが、添付ファイルを表示する方法がわからないので教えていただけると助かります。

件名を表示させるプログラムと本文を閲覧するプログラム以下の通り作成しています。
件名表示プログラム(一部)
foreach ( $pop -> Head( $i )) {
$info_link = "<a href=\"./mail.cgi?uname=$user&passwd=$pass&msgnum=$i\">$sub</a>";
}

本文表示プログラム(一部)
foreach ( $pop -> Body( $msgn )) {
$body = jcode($_)->mime_decode()->sjis;
$HTML .= <<"EOL";
$body<br>
EOL
}
$HTML .= <<"EOL";
困り度:
  • すぐに回答を!
質問投稿日時:
08/07/08 21:10
最新から表示回答順に表示

回答

ANo.2 自力で添付付きメールを解析する。
添付メールの基本構成は以下の通りです
http://cns-guide.sfc.keio.ac.jp/2003/2/2/3.html

正規表現で切り出した部分より上部を次々に削除して行くとモジュールを使うより高速です。(だと思っています;)

マルチパート(添付付きのメール)は 本文 と 添付部分 の区切りにboundary(バウンダリ)という文字列を利用しています。
boundaryの文字列はヘッダ部分で指定してあります。

一度、メーラーで受信した添付メールのソースを見ると構成がわかります。
インターネットメールは基本的にテキストデータしか送受信できませんので添付ファイル部分はBASE64というものでエンコードされてテキスト化されている事が標準です。この添付部分をデコードして保存する手順になります。

メールに関する知識付けの為に一度、手作業で行ってみるのも楽しいです。
回答者:nerumako
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/07/12 20:07
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.1 こんにちは、

ご自身で解析して添付ファイル部分を取り出して
デコードするのは面倒そうなので、

MIME::Parser が使えれば使ってみてはどうでしょうか?

http://search.cpan.org/~doneill/MIME-tools-5.427/lib/MIME/Parser.pm
回答者:g_p_
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/07/11 11:03
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示