Zend_Mail отправляет специальные символы, ломающие электронную почту в клиенте - PullRequest
1 голос
/ 05 июля 2010

Я использую 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 (> = WARN):

timestamp | 2010-07-05T09: 48: 03 + 10: 00 сообщение | O: 11:«ArrayObject»: 3: {s: 9: «исключение»; O: 32: «Zend_Controller_Action_Exception»: 7: {s: 25: «

Журнал ошибок содержит (это выдержка изверхняя часть)

отметка времени | 2010-07-05T09: 48: 03 + 10: 00 сообщение | O: 11: «ArrayObject»: 3: {s: 9: «исключение»; O:32: "Zend_Controller_Action_Exception": 7: {s: 25: "Zend_Exception_previous"; N; s: 10: "* message"; s: 64: "Действие" crgdtgdf "не существует и не было перехвачено в __call ()";с: 17: "Exceptionstring"; s: 0: ""; s: 7: "* код"; я: 404; s: 7: "* файл"; s: 73: "/ VAR / WWW / развитие / рабочие области/s.rees/library/Zend/Controller/Action.php";s:7:"*line";i:485;s:16:"Exceptiontrace";a:4:{i:0;a:6:{s: 4: "файл"; s: 73: "/ Var / WWW / разработка / рабочее пространство / s.rees / библиотека / Zend / Controller / Дейсn.php "; s: 4:" строка "; I: 515; s: 8:" функции "; s: 6:" __ называют "; s: 5:" класс "; s: 22:" Zend_Controller_Action "; s: 4: "тип"; s: 2: "->"; s: 4: "арг"; а: 2: {я: 0; s: 14: "crgdtgdfAction"; я: 1; а: 0: {}}} i: 1; a: 6:

Есть идеи, как я могу фильтровать / кодировать электронную почту, чтобы отображались все выходные данные журнала?Я действительно нуждаюсь в этом по электронной почте со всеми деталями.

Ответы [ 2 ]

2 голосов
/ 05 июля 2010

Сериализованные данные PHP содержат нулевой байт перед частными или защищенными членами любого сериализованного объекта.

Вам потребуется либо десериализовать и повторно обработать вывод, либо вам нужно будет удалитьнулевые байты перед отправкой их по электронной почте.

0 голосов
/ 07 августа 2014

Я решил это с помощью:

$text = filter_var($text, FILTER_SANITIZE_SPECIAL_CHARS);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...