PHPMailer character encoding issues

前端 未结 9 988
太阳男子
太阳男子 2020-12-07 07:38

I try to use PHPMailer to send registration, activation. etc mail to users:

require(\"class.phpmailer.php\");
$mail -> charSet = \"UTF-8\";
$mail = new PH         


        
相关标签:
9条回答
  • 2020-12-07 07:55

    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) . '?=';;
    
    0 讨论(0)
  • 2020-12-07 07:58

    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.

    0 讨论(0)
  • 2020-12-07 08:02

    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";
    
    0 讨论(0)
  • 2020-12-07 08:02

    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 = 'midireccion@email.com';
    $mail->FromName = 'Mi nombre';
    $mail->AddAddress('emaildestino@email.com');
    $mail->Subject = 'Prueba';
    $mail->Body = '';
    $mail->IsHTML(true);
    
    
    // Active condition utf-8
    $mail->CharSet = 'UTF-8';
    
    
    // Send mail
    $mail->Send();
    
    0 讨论(0)
  • 2020-12-07 08:05

    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.

    0 讨论(0)
  • 2020-12-07 08:05
    $mail -> CharSet = "UTF-8";
    $mail = new PHPMailer();
    

    line $mail -> CharSet = "UTF-8"; must be after $mail = new PHPMailer(); and with no spaces!

    try this

    $mail = new PHPMailer();
    $mail->CharSet = "UTF-8";
    
    0 讨论(0)
提交回复
热议问题