Soru PHPMailer karakter kodlama sorunları


Kayıt, aktivasyon göndermek için PHPMailer kullanmaya çalışıyorum. vb kullanıcılar için mail:

require("class.phpmailer.php");
$mail -> charSet = "UTF-8";
$mail = new PHPMailer();
$mail->IsSMTP();  
$mail->Host     = "smtp.mydomain.org";  
$mail->From     = "name@mydomain.org";
$mail->SMTPAuth = true; 
$mail->Username ="username"; 
$mail->Password="passw"; 
//$mail->FromName = $header;
$mail->FromName = mb_convert_encoding($header, "UTF-8", "auto");
$mail->AddAddress($emladd);
$mail->AddAddress("mytest@gmail.com");
$mail->AddBCC('mytest2@mydomain.org', 'firstadd');
$mail->Subject  = $sub;
$mail->Body = $message;
$mail->WordWrap = 50;  
if(!$mail->Send()) {  
   echo 'Message was not sent.';  
   echo 'Mailer error: ' . $mail->ErrorInfo;  
}

$message latin karakterler içeriyor. Ne yazık ki tüm web postaları (gmail, webmail.mydomain.org, emailaddress.domain.xx) farklı kodlama kullanıyor.

Postalarımı tüm posta kutularında aynı şekilde göstermek için UTF-8 kodlamasını nasıl kullanabilirim?

Posta başlığı genişliğini dönüştürmeyi deniyorum mb_convert_encoding()ama şanssız.


128
2018-03-22 10:40


Menşei


bir şey değiştirdin mi
CharSet'in büyük harf kullanımı, bovender tarafından değiştirildi. - gogowitsch


Cevaplar:


% 100 emin iseniz ISO mesajınız ISO-8859-1 içerir. utf8_encode David'in dediği gibi. Aksi halde kullanın mb_detect_encoding ve mb_convert_encoding $ mesajında.

Ayrıca şunu unutmayın

$mail -> charSet = "UTF-8"; 

İle değiştirilmelidir:

$mail->CharSet = 'UTF-8';

Ve yerleştirilmiş sonra sınıfın ortaya çıkışı ("yeni" den sonra). Özellikler büyük / küçük harfe duyarlıdır! Bakın PHPMailer belgesi liste ve tam yazım.


331
2018-03-22 14:36



Peki ben bu çılgın eski gibi kimsenin umurunda değil mi bilmiyorum, ama benim için çalışmak için bunu almak için $ mail-> Encoding = "base64" eklemek zorunda kaldı - Andrew Revak
@AndrewRevak Günü kurtardın! :) - carla
@AndrewRevak Harika şeyler! Bunu çözen şey bu. - BernardA


$mail -> CharSet = "UTF-8";
$mail = new PHPMailer();

hat $mail -> CharSet = "UTF-8"; sonra olmalı $mail = new PHPMailer(); ve boşluk olmadan!

bunu dene

$mail = new PHPMailer();
$mail->CharSet = "UTF-8";

22
2018-05-06 14:00



Daha iyi okumak için bu yazıyı güncelledim, ancak bu soruyu 2 yıl önce zaten yanıtladı! Ve kabul edilen bu cevap zaten bunu içeriyordu. - Dwza


Kendim bu şekilde çalışıyorum

  $mail->FromName = utf8_decode($_POST['name']);

http://php.net/manual/en/function.utf8-decode.php


4
2018-04-30 03:08



Kendim, POST şeyim yok, sadece utf-8 kodlu bir dosyada yazılmış düzenli bir Fransız dizesi ve bu bir çekicilik gibi işe yaradı, teşekkürler! - toni07


Partiye geç kaldığım için üzgünüm. Sunucu yapılandırmanıza bağlı olarak, karakterleri kesinlikle belirtmeniz gerekebilir. Küçük harfler utf-8, aksi halde göz ardı edilecektir. Burada çözüm aramaya son verirseniz, bunu deneyin:

$mail->CharSet = "UTF-8";

ile değiştirilmelidir:

$mail->CharSet = "utf-8";

3
2018-02-09 15:28





$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->Encoding = "16bit";

2
2018-05-28 04:59





Mesajınız Latin1 kullanıyorsa, kullanabilirsiniz utf8_encode Her neyse, benim için çalışıyor.


0
2018-03-22 14:19





@ $mail -> charSet = "UTF-8"; 

--- bu satırın altında olması gerekir

$mail = new PHPMailer(); line.

pff ..


Evet bu doğru. Nesne somutlaştırmasından sonra onu yerleştirmelisin.


0
2018-06-09 13:44



Bu soruya bir cevap vermemektedir. Bir yazarın eleştirisini yapmak ya da bir açıklama istemek için, kendi gönderilerinin altında bir yorum bırakın - her zaman kendi gönderilerinize yorum yazabilirsiniz ve yeterli olduğunda itibar yapabileceksin herhangi bir gönderiye yorum. - piet.t
Bu konu için bir eleştiri veya açıklama talebi değil. Doğru cevap: $ mail = yeni PHPMailer (); $ mail-> CharSet = 'UTF-8'; - Nikos Kapetanakos
Zo bana Holian'ın cevabı hakkında bir yorum gibi görünüyor çünkü ona bir şey eklemiyor. - piet.t
charSet özelliğini kullanırsanız, işe yaramaz. Doğru olan CharSet. Dava farklı yapar. - Nikos Kapetanakos
Öyleyse neden doğru olanı vermek yerine yanlış cevabı alıntılıyorsunuz? Ama o da zaten var, ne eklemek zorundasın? - piet.t