1

Perl & MAIL::IMAPClientを使用して、Gmail からのメールを.txtIMAPClient メソッドを使用してファイルとして保存しています。

message_to_file

これらのファイルには、テキストとしてエンコードされた電子メールの添付ファイルが含まれているようです。

テキストファイルの一部を次に示します。

--0015174c1274ee7ca60495ca69d5
Content-Type: video/3gpp; name="20101112233055.3gp"
Content-Disposition: attachment; filename="20101112233055.3gp"
Content-Transfer-Encoding: base64
X-Attachment-Id: 1353288501407252480-1

AAAAHGZ0eXAzZ3A0AAADADNncDRtcDQxM2dwNgAFHyltZGF0AAABthAwrMK9/Mue7fM+95wsf9P8
WI7mPzzp/ikijbucv72j7OywVGuh5kBzo89Zra6PihxZg0zadDqihZFpsPJeG36Ihk9qZW+LLQ2u
NEd96vsqgpnLFnhhwGBWgL2Xpt0cXkW....[A LOT MORE CHARS]....AAAQAAAALAAAAAQAAABRzdHN6
AAAAAAAAACAAAAChAAAAIHN0Y28AAAAAAAAABAABHNoAASMaAALYFwAFHeU=
--0015174c1274ee7ca60495ca69d5--

添付ファイルを個別に保存する方法が見つかりません。解析を介してこれを行う方法はありますか?

4

2 に答える 2

2

そこにあるのは、MIME でエンコードされた電子メール メッセージの生のテキストです。ほとんどの言語には、これらを解析するための汎用 MIME ライブラリがあります。CPAN で簡単に検索すると、 MIME::Parserがトリックを行う可能性があることがわかります。

use MIME::Parser;

open(FH, '/var/tmp/test.txt');
my $parser = new MIME::Parser;
my $entity = $parser->parse(\*FH) or die;

$entity->dump_skeleton;

これにより、プレーン テキスト ファイル test.txt に保存されている電子メールのさまざまな部分が /var/tmp にダンプされます。その他のオプションについては、MIME::Parser のドキュメントを参照してください。

于 2010-11-29T17:38:30.490 に答える
1

これは回避策の提案です。ヘッダーを通過した後、このロジックを実行します。

use MIME::Base64;

my $attachlines = '';
while ( <$input> ) { 
    last if index( $_, '--0015174c1274ee7ca60495ca69d5--' ) == 0;
    $attachlines .= $_;
}

my $attach = MIME::Base64::decode( $attachlines );

: MIME マルチパート フォームがどのように機能するかを知っているのは当然だと思うので、プログラムでディバイダーを取得する方法については説明しません'--0015174c1274ee7ca60495ca69d5--'

于 2010-11-29T17:42:17.340 に答える