Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Ünlü mail() 'de Türkçe Karakter Sorunu

şöyle bir kod yazdım;

{
$mail = mail(WEBMASTER_EMAIL, $subject, $message,
	"Content-type: text/html; charset=utf-8\n"
	."MIME-Version: 1.0\n"
        ."From: ".$name." <".$email.">\r\n"
        ."Reply-To: ".$email."\r\n"
        ."X-Mailer: PHP/" . phpversion());


Sorunum bu kod ile aldığım mailin içeriğinde sorun olmadığı halde $subject ve From kısımlarında türkçe karakterlerin bozuk olması.

(form sayfasında da utf-8 kullanıyorum,)
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • halidaltuner adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    144 cevap - 4 soru
    mailer ve form dosyasının karakter seti de utf8 olması gerekiyor.
    • Lupus adlı üyenin fotoğrafı Lupus
      form dosyasının karakter setini nasıl tanımlamalıyım
      10 yıl önce yazılmış
    • halidaltuner adlı üyenin fotoğrafı halidaltuner
      meta etiketiyle utf8 charset belirlemelisiniz. Ayrıca dosyanın utf8-bom olması gerekiyor sanırım.
      10 yıl önce yazılmış
    • Lupus adlı üyenin fotoğrafı Lupus
      hem form dosyasının metası bomsuz utf hemde mailer dosyasınınki
      ama hala çözemedim sorunu
      10 yıl önce yazılmış
    • Lupus adlı üyenin fotoğrafı Lupus
      
      $mail = mail(WEBMASTER_EMAIL, $subject, $message,
      'Content-type: text/html; charset=utf-8'."\r\n"
      .'MIME-Version: 1.0'."\r\n"
      ."From: ".$name." <".$email.">."\r\n"
      ."Reply-To: ".$email."\r\n"
      ."nX-Mailer: PHP/" . phpversion());
      
      


      mailer'ın son hali bu

      Şu anda $subject'in Ğ ve Ş harfleri dışında türkçe karakterlerde sorun yok.
      10 yıl önce yazılmış
    • halidaltuner adlı üyenin fotoğrafı halidaltuner
      phpmailer'ı kullanabilirsiniz. Onda belirlediğiniz charset sıkıntı oluşturmuyor:)
      10 yıl önce yazılmış

Cevaplar

  • siyahbeyaz adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    472 cevap - 20 soru
    $headers= 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-9' . "\r\n";
    $headers .= 'To: Alıcı 1 <alici1@eposta.com>, Alıcı 2 <alici2@eposta.com>' . "\r\n";
    $headers .= 'From: Yollayan Kişiyim <yollayan@eposta.com>' . "\r\n";
    $headers .= 'Reply-To: Yanit E-Postasi <yanit@eposta.com>' . "\r\n";
    $headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
    $headers .= 'Cc: acikkopya@eposta.com' . "\r\n";
    $headers .= 'Bcc: gizlikopya@eposta.com' . "\r\n";



    kullanabilirsin... iso-8859-9 türkçe karekteri sorun cıkartmaz
  • risyasin adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    14 cevap - 0 soru
    Büyük ihtimalle posta görüntüleyicinizle ilgili bir sorun olabilir.
    gelen mailin tam kaynak koduna bakarsanız bir ipucu bulabilirsiniz.

    Mail body içinde utf-8 sorunu yokken sadece subject'te olması bu durumun Server side değil de Client side olduğunu gösterir. Thunderbird kullanıyorsanız bu tarz saçmalıklar yaşayabilirsiniz.
    • rdonerkaya adlı üyenin fotoğrafı rdonerkaya
      Sorun Client Side olmadığını %100 de %100 ispatlarım. envai çeşit uygulama ve tarayıcı da açtım ki hem windows ortamına hemde linux tarafında değişen yok.
      Ama illa yardımcı olmak istersen
      $key = "=?UTF-8?B?".base64_encode(urldecode($key))."?=";
      

      devamında
      if (($key != "To") && ($key != "Subject")) { ...
      

      1nci satırdaki ($key) eklemeden önce Gönderen Adı'nda Türkçe karaterler acaip görünüyordu tabii konu kısmı da. ekledikten sonra gönderen düzeldi ama konu hala aynı ki bu koddaki $key tanımım tüm header'lar için kullandığım bir tanım. bunu düzeltene yemek ısmarlıcam :D
      6 yıl önce yazılmış