J'essaye d'utiliser PHPMailer pour envoyer l'inscription, l'activation. etc mail aux utilisateurs:
require("class.phpmailer.php");
$mail -> charSet = "UTF-8";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.mydomain.org";
$mail->From = "[email protected]";
$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("[email protected]");
$mail->AddBCC('[email protected]', 'firstadd');
$mail->Subject = $sub;
$mail->Body = $message;
$mail->WordWrap = 50;
if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
Le $message
contient des caractères latins. Malheureusement, tout le webmail (gmail, webmail.mydomain.org, emailaddress.domain.xx) utilise un codage différent.
Comment puis-je forcer l'utilisation du codage UTF-8 pour afficher mon courrier 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 chance.
Réponses:
Si vous êtes sûr à 100% que $ message contient ISO-8859-1, vous pouvez utiliser utf8_encode comme le dit David. Sinon, utilisez mb_detect_encoding et mb_convert_encoding sur $ message.
Notez également que
$mail -> charSet = "UTF-8";
Doit être remplacé par:
$mail->CharSet = 'UTF-8';
Et placé après l'instanciation de la classe (après le
new
). Les propriétés sont sensibles à la casse! Voir la documentation PHPMailer pour la liste et l'orthographe exacte.Le codage par défaut de PHPMailer
8bit
peut également être problématique avec les données UTF-8. Pour résoudre ce problème, vous pouvez faire:$mail->Encoding = 'base64';
Prenez note que
'quoted-printable'
cela fonctionnerait probablement aussi dans ces cas (et peut-être même'binary'
). Pour plus de détails, vous pouvez lire RFC1341 - Content-Transfer-Encoding Header Field .la source
$mail -> CharSet = "UTF-8"; $mail = new PHPMailer();
la ligne
$mail -> CharSet = "UTF-8";
doit être après$mail = new PHPMailer();
et sans espaces!essaye ça
$mail = new PHPMailer(); $mail->CharSet = "UTF-8";
la source
Désolé d'être en retard à la fête. En fonction de la configuration de votre serveur, vous devrez peut-être spécifier un caractère strictement avec des lettres minuscules utf-8, sinon il sera ignoré. Essayez ceci si vous vous retrouvez ici à la recherche de solutions et qu'aucune des réponses ci-dessus ne vous aide:
$mail->CharSet = "UTF-8";
doit être remplacé par:
$mail->CharSet = "utf-8";
la source
Je travaille moi-même de cette façon
$mail->FromName = utf8_decode($_POST['name']);
http://php.net/manual/en/function.utf8-decode.php
la source
Je devenais & eacute; 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 aide.
la source
$mail = new PHPMailer(); $mail->CharSet = "UTF-8"; $mail->Encoding = "16bit";
la source
16bit
@ $mail -> charSet = "UTF-8";
--- cette ligne doit être sous
$mail = new PHPMailer(); line.
pff ..
Oui c'est correct. Vous devez le placer après l'instanciation de l'objet.
la source
Le moyen le plus simple et vous aidera est de définir CharSet sur UTF-8
$mail->CharSet = "UTF-8"
la source
Pour éviter les problèmes d'encodage de caractères lors de l'envoi d'e-mails en utilisant la classe PHPMailer, nous pouvons le configurer pour l'envoyer avec l'encodage de caractères UTF-8 en utilisant le paramètre "CharSet", comme on peut le voir dans le code Php suivant:
$mail = new PHPMailer(); $mail->From = '[email protected]'; $mail->FromName = 'Mi nombre'; $mail->AddAddress('[email protected]'); $mail->Subject = 'Prueba'; $mail->Body = ''; $mail->IsHTML(true); // Active condition utf-8 $mail->CharSet = 'UTF-8'; // Send mail $mail->Send();
la source
Lorsque aucun des éléments ci-dessus ne fonctionne, et que les mails ressemblent toujours à
ª הודפסה ×•× ×©×œ
:$mail->addCustomHeader('Content-Type', 'text/plain;charset=utf-8'); $mail->Subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';;
la source
$ mail -> charSet = "UTF-8"; --- cette ligne doit être sous $ mail = new PHPMailer (); ligne.
pff ..
la source