J'essaie d'envoyer un courrier électronique avec la classe PHPmailer, mais le code HTML que j'envoie est vide ou les caractères ne sont pas configurés et sans accent.
<?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!
}
}
}
}
?>
J'ai sauté la configuration SMTP parce qu'il fonctionne correctement.
Vérifiez bien votre code PHP est également encodé en UTF-8.
Décommentez la ligne //$mail->CharSet="UTF-8";
et déplacez-la idéalement juste après la $mail = new PHPMailer(true);
, ainsi le code ressemblerait à ceci:
// ...
$mail = new PHPMailer(true);
$mail->CharSet = "UTF-8";
// ...
Dans votre code, il est appelé après la $mail->Send();
et le paramètre charset n'a pas été pris en compte ...
Oui, juste après le "nouveau PHPMailer (true);". J'ai eu le même problème avec:
$mail = new PHPMailer(true);
try {
$mail->setLanguage('fr', 'inc'.DIRECTORY_SEPARATOR.'PHPMailer'…);
$mail->CharSet = 'UTF-8';
et passer à:
$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';
try {
$mail->setLanguage('fr', 'inc'.DIRECTORY_SEPARATOR.'PHPMailer'…);
résolu le problème des accents.