267 votes

Problèmes de codage des caractères de PHPMailer

J'essaie d'utiliser PHPMailer pour envoyer des messages d'enregistrement, d'activation, etc. aux utilisateurs :

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;  
}

The $message contient des caractères latins. Malheureusement, tous les webmails (gmail, webmail.mydomain.org, emailaddress.domain.xx) utilisent un codage différent.

Comment puis-je forcer l'utilisation du codage UTF-8 pour que mon courrier s'affiche exactement de la même manière sur toutes les boîtes aux lettres ?

J'ai essayé de convertir la largeur de l'en-tête du courrier mb_convert_encoding() mais sans succès.

0 votes

La capitalisation de CharSet ci-dessus a été modifiée par bovender.

3voto

biojazzard Points 369

Je devenais &oacute ; dans $mail->Subject /w PHPMailer.

Donc pour moi, la solution complète est :

// Your Subject with tildes. Example.
$someSubjectWithTildes = 'Subscripción España';

$mailer->CharSet = 'UTF-8';
$mailer->Encoding = 'quoted-printable';
$mailer->Subject = html_entity_decode($someSubjectWithTildes);

J'espère que cela vous aidera.

1voto

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

2 votes

Il n'existe pas d'encodage tel que 16bit

0voto

David V. Points 3065

Si votre message utilise Latin1, vous pouvez utiliser utf8_encode Ça marche pour moi, en tout cas.

0voto

$mail -> charSet = "UTF-8" ; ---cette ligne devrait être sous $mail = new PHPMailer() ; ligne.

pff

0voto

Trung Bui Points 178

La méthode la plus simple et qui vous aidera est de définir CharSet à UTF-8.

$mail->CharSet = "UTF-8"

0 votes

NickZuber La ligne exacte est là à cause des modifications. Elle n'était pas aussi exacte dans la question originale...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X