Наличие некоторой проблемы, отправляющей правильно, отформатировало электронную почту HTML из Сценария PHP. Я выполняю PHP 5.3.0 и Apache 2.2.11 на Windows XP Professional.
Вывод похож на это:
Сводка агента для поддержки во вторник 20 апреля 2010=20 объем времени имени расширения
137 имен агента 1:27:25 1
138 = 09 0:00:00 0
139 = 09 0:00:00 0
Вы видите =20 и =09 там? При рассмотрении HTML, Вы также видите = знаки, превращенные =3D. Я полагаю, что это - проблема кодировки символов, когда я считал следующее в Википедии:
ISO-8859-1 и беспорядок Windows 1252
Это очень характерно для mislabel текстовых данных с набором символов, маркируют ISO-8859-1, даже при том, что данные являются закодированным действительно Windows 1252. В Windows 1252 коды между 0x80 и 0x9F используются для букв и пунктуации, тогда как они - коды управления в ISO-8859-1. Много веб-браузеров и почтовых клиентов интерпретируют коды управления ISO-8859-1 как символы Windows 1252 для размещения такого mislabeling, но это не стандартное поведение, и заботу нужно соблюдать, чтобы не генерировать эти символы в ISO-8859-1 маркированное содержание.
Это похоже на проблему, но я не знаю, как зафиксировать. Мой код похож на это:
ob_start();
report_queue_summary($yesterday,$yesterday,$first_extension,$last_extension,$queue);
$body_report = ob_get_contents();
ob_end_clean();
$body_footer = "This is an automatically generated e-mail.";
$message = new Mail_mime();
$html = $body_header.$body_report.$body_footer;
$message->setHTMLBody($html);
$body = $message->get();
$extraheaders = array("From"=>"***redacted***","To"=>$recipient, "Subject"=>"Agent Summary for $yesterday [$queue]", "Content-type"=>"text/html; charset=iso-8859-1");
$headers = $message->headers($extraheaders);
# setup e-mail;
$host = "*********";
$port = "26";
$username = "*****";
$password = "*****";
# Send e-mail
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($recipient, $extraheaders, $body);
if (PEAR::isError($mail)) {
echo("" . $mail->getMessage() . "");
} else {
echo("Message successfully sent!");
}
Состоит в том проблема, что я использую выходную буферизацию?
Проблема в том, что вам нужен следующий заголовок:
Content-Transfer-Encoding: quoted-printable