« 回到彭羚 | 首 页 | [ZT]Google Adsense 提示100条 »

2006 年 07 月 12 日

对E-mail的分解,提取邮件图片和文字等

kreny 发表于 July 12, 2006 08:39 PM | 分类: Server Technol. RSS2

  • 本文目的:
    在Linux下对邮件进行分解,并提取其中的图片和文字。

  • 软件环境:
    OS: Linux
    App. : PHP,Qamil,Pear MIME,SHELL

  • 本文应用:
    多数可以使用在使用邮件向Blog投稿等。
  • 流程说明:
    1. 发送一个带有图片或者其他附件的邮件。

    2. vpopmail中对邮件进行过滤。
    3. 这里我们将发送到 name-0000@foo.com 的邮件全部列为对象邮件。
      这里 “0000”可以替代任何字符。
      Vpopmail 的设置:
      建立: /home/vpopmail/domains/foo.com/.qmail-name-default 文件
      | /usr/local/bin/php /home/foo/mailimg.php

    4. mailimg.php代码(部分)
    5. // PEAR
      require_once("PEAR.php");
      // PEAR Mail_Mime
      require_once("Mail/mimeDecode.php");
      // Paramas for Mime
      $params['include_bodies'] = TRUE;
      $params['decode_bodies'] = TRUE;
      $params['decode_headers'] = TRUE;
      // Decode mail message
      $decode = new Mail_mimeDecode($mailsource);
      $mail = $decode->decode($params);
      // 获取Header部分
      $header = $mail->headers;
      // 获取 TO 和 FROM
      $header['to'] = preg_replace("/.*<(\S+)>.*/","$1", $header['to']);
      $header['from'] = preg_replace("/.*<(\S+)>.*/","$1", $header['from']);
      //判断是否是 muiltipart E-mail
      if ($mail->ctype_primary == 'multipart' || count($mail->parts) > 1) {
      echo("TRUE");
      }
      // 判断是否是图片
      if (!eregi("text", $contenttype)) {
      $part_body = $parts->body;
      $img_file = $IMG_DIR. $contentfilename;
      // 分离图片文件
      if ($IMAGE = fopen($img_file, 'w')) {
      fwrite($IMAGE, $part_body);
      fclose($IMAGE);
      }
      }

    (END)



    自动链接单元:
    评论: