我正在使用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(&gt; = WARN):
timestamp | 2010-07-05T09:48:03 + 10:00 message | O:11:“ArrayObject”:3:{s:9:“exception”; O:32:“Zend_Controller_Action_Exception”:7:{ S:25:“
错误日志包含(这是从顶部开始的摘录)
timestamp | 2010-07-05T09:48:03 + 10:00 message | O:11:“ArrayObject”:3:{s:9:“exception”; O:32:“Zend_Controller_Action_Exception”:7:{ s:25:“Zend_Exception_previous”; N; s:10:“* message”; s:64:“Action”crgdtgdf“不存在且没有被困在__call()”; s:17:“Exceptionstring”; s 0: “”; S:7: “*代码”; I:404; S:7: “*文件”; S:73:“/无功/网络/发展/工作区/ s.rees /库/ Zend的/控制器/ action.php的 “; S:7:” *线 “; I:485; S:16:” Exceptiontrace “;一个:4:{I:0;一个:6:{S:4:” 文件“; S:73: “/无功/网络/发展/工作区/ s.rees /库/的Zend /控制器/ action.php的”; S:4: “线”; I:515; S:8: “功能”; S :6: “__呼叫”; S:5: “类”; S:22: “化Zend_Controller_Action”; S:4: “类型”; S:2: “ - &gt;” 中,S:4: “ARGS”;一个:2:{I 0,S:14: “crgdtgdfAction”; I:1; A:0:{}}} I:1;一个:6:
我是如何过滤/编码电子邮件以便显示所有日志输出的? 我真的需要通过电子邮件发送所有细节。
答案 0 :(得分:2)
PHP的序列化数据在任何序列化对象的私有或受保护成员之前包含空字节。
您将需要反序列化并重新处理输出,或者您需要在发送电子邮件之前删除空字节。
答案 1 :(得分:0)
我用以下方法解决了这个问题:
$text = filter_var($text, FILTER_SANITIZE_SPECIAL_CHARS);