Cant send email with correct characters with PHPMailer

32,166

Solution 1

Double check Your PHP code is also in UTF-8 encoding.

Uncomment the line //$mail->CharSet="UTF-8"; and move it idealy right after the $mail = new PHPMailer(true);, so the code would look like:

// ...
$mail = new PHPMailer(true);
$mail->CharSet = "UTF-8";
// ...

In Your code it is called after the $mail->Send(); thus the charset setting did not take in count...

Solution 2

Yes, right after the "new PHPMailer(true);". I had the same problem with:

$mail = new PHPMailer(true);
try {
    $mail->setLanguage('fr', 'inc'.DIRECTORY_SEPARATOR.'PHPMailer'…);
    $mail->CharSet = 'UTF-8';

and changing to:

$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';
try {
    $mail->setLanguage('fr', 'inc'.DIRECTORY_SEPARATOR.'PHPMailer'…);

solved the accents problem.

Share:
32,166
darkman
Author by

darkman

Updated on July 09, 2022

Comments

  • darkman
    darkman almost 2 years

    I'm trying to send a e-mail with the PHPmailer class, but the html i send, is empty, or the characters are unconfigured, and without accents.

    <?php
    header("Content-Type: text/html; charset=ISO-8859-1", true);
    require_once('class.phpmailer.php');
    include "config.php";
    
    $nome = trim($_POST['nome']);
    $email  = trim($_POST['Imail']);
    $usuario = trim($_POST['usuario']);
    $senha = trim($_POST['senha']);
    $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
    
    $mail->IsSMTP(); // telling the class to use SMTP
    
    try {
      $mail->AddAddress($email, $nome);
      $mail->SetFrom('[email protected]', 'Conectfarma');
      $mail->AddReplyTo('[email protected]', 'Conectarma');
      $subject = 'Guia Rápido de Interações Medicamentosas';
      $sendsubject= "=?utf-8?b?".base64_encode($subject)."?=";
      $mail->Subject = $sendsubject;
     $mensagem  = "<!DOCTYPE html>
    <html>
    <body>
    Bem vindo ao Guia Rápido de Interações Medicamentosas em Neurologia e Psiquiatria
    Seu Login e Senha para acesso ao aplicativo são:\n
    Login:"  .$nome. "\n, Senha : " .$senha.
    "\nAtenciosamente,
    Conectfarma Publicações Científicas
    </body>
    </html>";
    
      $mail->Body = $mensagem;
      //$mail->CreateBody($mensagem);
      $mail->IsHTML(true);
      $mail->Send();
      //$mail->CharSet="UTF-8";
      echo "<!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
    <title>Confirmação</title>
    </head>
    <body>
    Não vai maçã.
    </body>
    </html>
    ";
    } catch (phpmailerException $e) {
      echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
      echo $e->getMessage(); //Boring error messages from anything else!
    }
            }
        }
    }
    
    ?>
    

    I jumped the SMTP configuration because its working properly.