I try to use PHPMailer to send registration, activation. etc mail to users:
require["class.phpmailer.php"];
$mail -> charSet = "UTF-8";
$mail = new PHPMailer[];
$mail->IsSMTP[];
$mail->Host = "smtp.mydomain.org";
$mail->From = "";
$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[""];
$mail->AddBCC['', '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
contains latin characters. Unfortunately all webmail [gmail, webmail.mydomain.org, emailaddress.domain.xx] is using a different coding.
How can I force to use UTF-8 coding to show my mail exactly the same on all mailboxes?
I tried to convert the mail header width mb_convert_encoding[]
, but without luck.
Synchro
33.8k15 gold badges77 silver badges99 bronze badges
asked Mar 22, 2010 at 10:40
1
If you are 100% sure $message contain ISO-8859-1 you can use utf8_encode as David says. Otherwise use mb_detect_encoding and mb_convert_encoding on $message.
Also take note that
$mail -> charSet = "UTF-8";
Should be replaced by:
$mail->CharSet = 'UTF-8';
And placed after the instantiation of the class [after the new
]. The properties are case sensitive! See the PHPMailer doc fot the list & exact
spelling.
Also the default encoding of PHPMailer is 8bit
which can be problematic with UTF-8 data. To fix this you can do:
$mail->Encoding = 'base64';
Take note that 'quoted-printable'
would probably work too in these cases [and maybe even 'binary'
]. For more details you can read RFC1341 - Content-Transfer-Encoding Header Field.
answered Mar 22, 2010 at 14:36
AlexVAlexV
22.2k16 gold badges86 silver badges119 bronze badges
4
$mail -> CharSet = "UTF-8";
$mail = new PHPMailer[];
line $mail -> CharSet = "UTF-8";
must be after $mail = new PHPMailer[];
try this
$mail = new PHPMailer[];
$mail->CharSet = "UTF-8";
answered May 6, 2013 at 14:00
user2354947user2354947
3253 silver badges2 bronze badges
1
Sorry for being late on the party. Depending on your server configuration, You may be required to specify character strictly with lowercase letters utf-8, otherwise it will be ignored. Try this if you end up here searching for solutions and none of answers above helps:
$mail->CharSet = "UTF-8";
should be replaced with:
$mail->CharSet = "utf-8";
answered Feb 9, 2016 at 15:28
vzrvzr
951 silver badge7 bronze badges
1
When non of the above works, and still mails looks like ª הודפסה ×•× ×©×œ
:
$mail->addCustomHeader['Content-Type', 'text/plain;charset=utf-8'];
$mail->Subject = '=?UTF-8?B?' . base64_encode[$subject] . '?=';;
answered Feb 12, 2020 at 16:03
Ohad CohenOhad Cohen
5,3383 gold badges36 silver badges35 bronze badges
2
I was getting ó in $mail->Subject /w PHPMailer.
So for me the complete solution is:
// Your Subject with tildes. Example.
$someSubjectWithTildes = 'Subscripción España';
$mailer->CharSet = 'UTF-8';
$mailer->Encoding = 'quoted-printable';
$mailer->Subject = html_entity_decode[$someSubjectWithTildes];
Hope it helps.
answered Nov 27, 2018 at 10:42
biojazzardbiojazzard
5534 silver badges8 bronze badges
0
$mail = new PHPMailer[];
$mail->CharSet = "UTF-8";
$mail->Encoding = "16bit";
answered May 28, 2016 at 4:59
1
The simplest way and will help you with is set CharSet to UTF-8
$mail->CharSet = "UTF-8"
answered Dec 4, 2015 at 3:07
Trung BuiTrung Bui
1781 gold badge2 silver badges13 bronze badges
1
To avoid problems of character encoding in sending emails using the class PHPMailer we can configure it to send it with UTF-8 character encoding using the "CharSet" parameter, as we can see in the following Php code:
$mail = new PHPMailer[];
$mail->From = '';
$mail->FromName = 'Mi nombre';
$mail->AddAddress[''];
$mail->Subject = 'Prueba';
$mail->Body = '';
$mail->IsHTML[true];
// Active condition utf-8
$mail->CharSet = 'UTF-8';
// Send mail
$mail->Send[];
answered Mar 13, 2017 at 7:18