İngilizce olmayan karakterler kullanarak e-posta gönderirken Neden bazı karakterler soru işareti olarak gösterilir?

4 Cevap php

Ben phps mail function kullanarak İngilizce olmayan karakterler içeren bir metin e-posta göndermek için çalıştı. Ama bunun yerine benim ileti komik görünümlü çöp karakterler ile gitti. Bunu nasıl düzeltebilirim?

Ben bu kod parçası kullanın:

function _mail($to, $subject, $content)
{

 $headers = 'From: info@example.com' . "\r\n" .
    'Reply-To: info@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

 mail($to, $subject, $content, $headers);
}

Bazı karakterler soru işareti olarak çıktı ...

4 Cevap

Anahtar UTF-8 karakter setini kullanmaktır.

Bunun gibi, posta başlıklarının Content-Type: text/html; charset=UTF-8, MIME-Version 1.0 ve Content-Transfer-Encoding: quoted-printable Ekle:

$headers = 'From: info@example.com' . "\r\n" .
           'Reply-To: info@example.com' . "\r\n" .
           'Content-Type: text/html; charset=UTF-8' . "\r\n" .
           'MIME-Version: 1.0' . "\r\n" .
           'Content-Transfer-Encoding: quoted-printable' . "\r\n" .
           'X-Mailer: PHP/' . phpversion(); // Why would you want to send this header?

Metin yerine HTML kullanarak olacağını, ayrıca HEAD sizin (X) HTML postanın bir META etiketi eklemek gerekiyordu:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

Bu kesinlikle Joel'ın makalesinde The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) için bir durumdur.

Eğer başarılı bir şekilde bu sorunu çözmek için önce karakter kodlamaları rolünü anlamak gerekir.

Gibi bir posta sarıcı Swiftmailer size yardımcı olabilir.

Eğer kontrol etmek isteyebilirsiniz PEAR's MAIL_MIME