Problems with PHP Mailer header encoding

24,469

Use

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

instead of

$mail->CharSet = "utf8";

Share:
24,469

Related videos on Youtube

user3820171
Author by

user3820171

Updated on July 09, 2022

Comments

  • user3820171
    user3820171 almost 2 years
        <?php
    require_once('../class.phpmailer.php');
    //include("../class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
    iconv_set_encoding("internal_encoding", "UTF-8");
    
    $mail             = new PHPMailer();
    $mail->CharSet = "utf8";
    /*
    $body             = file_get_contents('contents.html');
    $body             = eregi_replace("[\]",'',$body);
    */
    $mail->IsSMTP(); // telling the class to use SMTP
    //$mail->Host       = "mail.app-cpr.com"; // SMTP server
    //$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
                                               // 1 = errors and messages
                                               // 2 = messages only
    $mail->SMTPAuth   = true;                  // enable SMTP authentication
    $mail->SMTPSecure = "tls";                 // sets the prefix to the servier
    $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
    $mail->Port       = 25;                   // set the SMTP port for the GMAIL server
    $mail->Username   = "[email protected]";  // GMAIL username
    $mail->Password   = "xxxxxxxxxxx";            // GMAIL password    
    $mail->SetFrom('[email protected]', 'First Last');
    
    $mail->AddReplyTo("[email protected]","First Last");
    
    $mail->Subject    = "ทดสอบ";
    /*
    $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
    */
    $mail->MsgHTML("ทดสอบ");
    
    $address = "[email protected]";
    $mail->AddAddress($address, "John Doe");
    
    if(!$mail->Send()) {
      echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
      echo "Message sent!";
    }
    
    ?>
    

    The email sending is ok but have a problems with the header.

    Subject : '&#3607;&#3604;&#3626;&#3629;&#3610;'

    I will try with
    - php mail special characters utf8
    - use => $mail->Subject = "=?UTF-8?B?".base64_encode($subject)."?=";

    But it does not work for me. How can I know what is the header coding and solve this to be right in my Thai langauge?

    • Maciej Jaśniaczyk
      Maciej Jaśniaczyk almost 10 years
      Try $mail->CharSet = "UTF-8";