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

perlでメールを受信して、添付ファイル部分をファイルにするスクリプトを書こうとしているのですが
知識がなく進めません。

単なるメールの受信は Mail::POP3Clientを使えば、簡単に出来ましたが
BODY部で、本文と 添付ファイルを区別して
本文には $honbun
添付ファイル @tenpu({-fname=>ファイル名, -content=>中身ファイル}, ...

という風に、簡単にメールボディ部を切り分ける方法やモジュールはあるのでしょうか?

例)
This is a multi-part message in MIME format.------=_NextPart_000_000F_01C59927.53E8
B0E0Content-Type: text/plain;format=flowed;charset="iso-2022-jp";reply-type=
originalContent-Transfer-Encoding: 7bit------=_NextPart_000_000F_01C59927.53E8B0E0C
ontent-Type: application/octet-stream;name="Tk-800.024.tar.gz"Content-Transfer-En
coding: base64Content-Disposition: attachment;filename="Tk-800.024.tar.gz"H4sICBX
bhDwCA1RrODAwLjAyNC50YXIA7DxrV9vIkvka/Yq6xBvLQX7ySnDCxRgTvAs2i0weJx

...

A 回答 (2件)

添付ファイル付きのメールは、普通、multipart/mixed とか multipart/form-data の形式になっていると思います。


なので、単純にboundary(デリミタ)で切り分ければいいだけですが、面倒ならMIME::Parserモジュールでも簡単ですね。

複数のファイルが添付されていれば、同じように区切られているだけですが、同じファイル名の場合もあるので注意が必要です。

ちなみに、自分で切り分ける方法をもう少し詳しく書くと、メッセージヘッダの中に「boundary=xxx」なんていうものが書かれているはずですから、これは「xxx」によって区切られている、という意味です。区切ったものは、さらにコンテントヘッダなどが付いていて、続いてボディ部、つまりデータが並んでいます。
    • good
    • 0

net::pop3など標準なモジュールで添付メールを切り出すのは大変だと思います。


MIMEという、メール処理専門のモジュールがあるので、それを使用することを
オススメします。MIMEなら、
mime::parserで解析し、添付メールがファイル切り出されます。

参考URL:http://homepage3.nifty.com/hippo2000/perltips/rc …
    • good
    • 0

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