multipartメールのbase64の解凍方法  [perl]  [tips]

multipart/mixedのメールが複数分割されて送られてきました。メール本文は空っぽで、全て添付ファイルになっていました。

どうやら、outlook expressで送信した場合に起こる現象のようですが、こちらで読めないので困ってしまいます。

中身を見ると、テキストの本文に続き、

Content-Type: application/octet-stream;
Content-Transfer-Encoding: base64

となっていて、この部分以降に怪しげな文字列が延々と続いています。

この部分以降は、base64でエンコードされたバイナリ添付ファイルなわけです。

この部分を取り出してエンコードを解けば(デコードすれば)、添付されていたファイルを復活できるはずです。

で、perlの出番です。

Step1:base64部分だけのファイルを作る

> ls
xxx[1_3].dat
xxx[2_3].dat
xxx[3_3].dat
> cat *.dat > abc.dat
> vim abc.dat
#ここで、必要な部分(怪しげな文字列の部分)以外を削除

Step2: perlでデコード

Perlのソース

#!/usr/bin/perl -w
use MIME::Base64;
binmode STDOUT,'raw';
binmode STDIN,'raw'; 
while(<>){
  print decode_base64($_);
}

楽勝だね。