代码之家  ›  专栏  ›  技术社区  ›  Stephen RC

Zendèu邮件发送特殊字符在客户端破坏电子邮件

  •  1
  • Stephen RC  · 技术社区  · 15 年前

    我使用ZendèMail发送日志文件的电子邮件,但它发送的是邮件客户端不喜欢的狡猾字符。

    我的代码:

    <?php
    $sBody = "errors.log (>= WARN):\n\n";
    $rFile = fopen($sErrorsLog, "r");
    while (!feof($rFile))
    {
        $sLine = fgets($rFile);
        $sBody.= $sLine;
    }
    
    $oMail = new Zend_Mail();
    $oMail->addTo($sTo)
          ->setFrom($sFrom)
          ->setSubject($sSubject)
          ->setBodyText($sMessage);
    

    我收到的邮件正文:

    errors.log(>=警告):

    时间戳| 2010-07-05T09:48:03+10:00消息| O:11:“ArrayObject”:3:{s:9:“异常”;O:32:“Zend\u Controller\u Action\u Exception”:7:{s:25:“Zend\u Exception\u previous”;N;s:10:“*消息”;s:64:“Action”crgdtgdf“不存在,并且未被困在u call()中”;s:17:“例外字符串”;s:0:“”;s:7:“*代码”;i:404;s:7:“*文件”;s:73:“/var/www/development/workspaces/s.rees/library/Zend/Controller/Action.php”;s:7:“*行”;i:485;s:16:“例外”;a:4:{i:0;a:6:{s:4:“文件”;s:73:“/var/www/development/workspaces/s.rees/library/Zend/Controller/Action.php”;s:4:“线”;一:515;s:8:“功能”;s:6:“\u呼叫”;s:5:“班级”;s:22:“Zend\u Controller\u Action”;s:4:“类型”;s:2:“—>”;s:4:“args”;a:2:{i:0;s:14:“crgdtgdfAction”;一:1;a:0:{}}i:1;答:6:

    有什么想法我可以过滤/编码的电子邮件,使所有的日志输出显示? 我真的需要把所有的细节都发出去。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Charles    15 年前

    PHP的序列化数据在任何序列化对象的私有或受保护成员之前包含一个空字节。

    您将需要取消序列化并重新处理输出,或者需要在发送电子邮件之前去掉空字节。

        2
  •  0
  •   pliashkou    11 年前

    我用以下方法解决了这个问题:

    $text = filter_var($text, FILTER_SANITIZE_SPECIAL_CHARS);