mail pear 备份

<?php
  require_once 'Mail/mimeDecode.php';
  // 取得邮件内容
  $params['include_bodies'] = true;
  $params['decode_bodies']  = true;
  $params['decode_headers'] = true;
  $params['input'] = file_get_contents("php://stdin");
  $params['crlf'] = "\r\n";
  $structure = Mail_mimeDecode::decode($params); 

  //取得发送邮件地址
  if(preg_match("/<(.*)>/", $mail_from, $matches)) {
    $mail_from = $matches[1];
  }
  //取得目标邮件地址
  $mail_to = $structure->headers['to'];
  if(preg_match("/<(.*)>/", $mail_to, $matches)) {
    $mail_to = $matches[1];
  }

  // 取得邮件标题
  $mail_subject = $structure->headers['subject']; 

  switch(strtolower($structure->ctype_primary)){
    case "text": // 只有一个Part(文本邮件)
      $mail_body = $structure->body;
      break;
    case "multipart":  // 有多个Part(图片等)
      foreach($structure->parts as $part){
        switch(strtolower($part->ctype_primary)){
          case "text": // 正文
            $mail_body = $part->body;
            break;
          case "image": // 图片
            //取得图片文件扩展名并转为小写
            $type = strtolower($part->ctype_secondary);
            //检查是否为JPEG格式(同样可以检查是否为GIF或者PNG格式)
            if($type != "jpeg" and $type != "jpg"){
              continue;
            }
            //把附件保存到文件
            $file_mame = $part->ctype_parameters['name'];
            $fp = fopen("/tmp/$file_mame", "w" );
            $length = strlen( $part->body );
            fwrite( $fp, $part->body, $length );
            fclose( $fp );
            break;
        }
      }
    break;
    default:
    $mail_body = "";
  }
  /*
   * 其他处理,如:把邮件地址、标题、正文、图片等信息保存到数据库
   */
?>

以上代码只是个框架,可以根据自己的需要修改和扩充。运行该代码需要 Pear 的 Mail 及 Mail_MIME 包,安装方法如下:

$ pear install -a Mail
$ pear install -a Mail_MIME
Read More