メール解析のプログラムを作成してて気づいたのだが、SoftBank の携帯(テストで使ってたのは、俺の 810T だが)のメールヘッダって、Content-Type ヘッダの後ろに空白を入れないんだな。
例えば、PC のメールソフト(Outlook とか EDMax とか AL-Mail とか諸々)だと、Content-Type ヘッダは、
Content-Type: multipart/mixed;
こんな感じで、'Content-Type:' の後ろに半角スペースがひとつ入ってる。
でも、810T のメールは、
Content-Type:multipart/mixed;
なんだよ。
他にも、コンテンツの属性を示すヘッダ関係は軒並み、
Content-Type:text/plain;charset=ISO-2022-JP
Content-Disposition:attachment;filename="HOGEHOGE.JPG"
Content-Transfer-Encoding:base64
みたいな感じで全て半角スペースは含まれてない。
他のヘッダ(To とか From とか Subject とか)は、全て半角スペースが含まれているのに・・・である。
変な実装。(^^;
いや、RFC にどう書かれているのかわからないが、半角スペースが無いなら無いで全然かまわんのやけど、他のヘッダと、Content 関係だけがフォーマットに違いがあるのが何か気持ち悪いよなあ。
PC から出したメールに添付した画像は抜き出せるのに、携帯メールに添付した画像が抜けないので、何でかいな?と調べたらそういうことで、
if ($data =~ /Content-Type\:\s+(\S+[^\;]*?)/i) {
という正規表現を使った条件をすり抜けてた。
if ($data =~ /Content-Type\:\s*(\S+[^\;]*?)/i) {
とすればOK。
Foma とか AU の端末もこんなんかなあ?
コメントする