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

GD乱码和windows有关……

imagefttext 乱码困扰我很久了
实在是不知道什么原因
我不会傻到用一个非utf8的文件吧

后来我测试发现相同的文件 在apache 2.2x php5.28 windows xp中文版上 汉字正常
vista 英文版上 显示就会有错误

今天我大胆的吃了口windows7 发现
确实是这样不过 windows7 已经正常显示了

Read More

输出比预期多了俩\n

今天php程序就是多出俩n
无解……

根本就没有道理啊
经过2个小时的认真分析
发现include的文件中有个文件?>后边有俩换行

……

Read More