解决方案 »

  1.   

    MsgHTML 方法是这样定义的  public function MsgHTML($message, $basedir = '') {
        preg_match_all("/(src|background)=\"(.*)\"/Ui", $message, $images);
        if(isset($images[2])) {
          foreach($images[2] as $i => $url) {
            // do not change urls for absolute images (thanks to corvuscorax)
            if (!preg_match('#^[A-z]+://#',$url)) {
              $filename = basename($url);
              $directory = dirname($url);
              ($directory == '.')?$directory='':'';
              $cid = 'cid:' . md5($filename);
              $ext = pathinfo($filename, PATHINFO_EXTENSION);
              $mimeType  = self::_mime_types($ext);
              if ( strlen($basedir) > 1 && substr($basedir,-1) != '/') { $basedir .= '/'; }
              if ( strlen($directory) > 1 && substr($directory,-1) != '/') { $directory .= '/'; }
              if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64',$mimeType) ) {
                $message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message);
              }
            }
          }
        }
        $this->IsHTML(true);
        $this->Body = $message;
        $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message)));
        if (!empty($textMsg) && empty($this->AltBody)) {
          $this->AltBody = html_entity_decode($textMsg);
        }
        if (empty($this->AltBody)) {
          $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n";
        }
      }
    并没有你示例的那句\ 在大多语言中都作为转义符使用,为了不让接收和处理该邮件的程序出现歧义,处理一下也是应该的
    不过直接删去就太无理了!
    比如内容中有一个 windows 路径名:C:\Program Files\Adobe\Reader 11.0
    处理后变成:C:Program FilesAdobeReader 11.0
    这成了什么玩意?