E-posta karakter kodlaması ile sorun PHP ile gönderdi?

1 Cevap php

Bir PHP komut dosyası düzgün biçimlendirilmiş bir HTML e-posta göndererek bazı sorun yaşıyorum. Windows XP Professional üzerinde PHP 5.3.0 ve Apache 2.2.11 çalıştırıyorum.

Çıktı şuna benzer:

Agent Summary for Support on Tuesday April 20 2010=20 Ext. Name Time Volume
137 Agent Name 01:27:25 1
138 =09 00:00:00 0
139 =09 00:00:00 0

Orada = 20 ve = 09 bakın? Eğer HTML bakarsanız siz de = 3D dönüşmüş = işaretleri bakın. Ben Wikipedia'da aşağıdaki okumak gibi bu bir karakter kodlama sorunu olduğunu anlamaya:

ISO-8859-1 ve Windows-1252 karışıklık

Bu veriler gerçekten kodlanmış, Windows-1252 olsa bile, charset etiket ISO-8859-1 ile metin verilerini yanlış etiketlendirirseniz çok yaygındır. Onlar ISO-8859-1 kontrol kodları ise Windows-1252 yılında, 0x80 ve 0x9F arasında kodları, harf ve noktalama işareti için kullanılır. Birçok web tarayıcıları ve e-posta istemcileri gibi mislabeling karşılamak amacıyla, Windows-1252 karakter olarak ISO-8859-1 kontrol kodlarını yorumlamak ancak standart davranış ve bakım ISO-8859-1 bu karakterleri üreten önlemek için alınması gereken değil etiketli içerik.

Bu sorun gibi görünüyor ama ben nasıl düzeltebilirim bilmiyorum. Benim kod şöyle görünür:

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!");
 } 

Ben çıktı tamponlama kullanıyorum sorun mudur?

1 Cevap

Sorun şu başlığı ihtiyaç olduğunu:

Content-Transfer-Encoding: quoted-printable