読者です 読者をやめる 読者になる 読者になる

MIME文書を解析する

PHP Python

Pythonで書けばこれだけのことだけど、

import sys
from email import message_from_file

msg = message_from_file(sys.stdin)
for part in msg.walk():
    tp = part.get_content_maintype()
    if tp == 'text':
        pass
    elif tp == 'image':
        pass
    elif tp == 'video':
        pass
    else:
        pass

PHPのMail_mimeには、walkがないから困る。

<?php
require_once 'Mail/mimeDecode.php';

function handle_part($part) {
  if (isset($part->parts)) {
    foreach($part->parts as $p) {
      handle_part($p);
    }
  }

  switch($part->ctype_primary) {
  case 'text':
    break;
  case 'image':
    break;
  case 'video':
    break;
  default:
    break;
  }
}

$data = file_get_contents('php://stdin');
$mime = Mail_mimeDecode::decode(array('include_bodies' => true,
                                      'decode_headers' => false,
                                      'decode_bodies'  => true,
                                      'input'          => $data,
                                      ));
handle_part($mime);

walkに相当するものがない以外は普通。decode関連以外はまともな実装じゃない。