wake-up-neo.net

Kann keine E-Mail mit korrekten Zeichen mit PHPMailer senden

Ich versuche, eine E-Mail mit der PHPmailer-Klasse zu senden, aber das HTML, das ich sende, ist leer oder die Zeichen sind nicht konfiguriert und ohne Akzente.

<?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!
}
        }
    }
}

?>

Ich habe die SMTP-Konfiguration übersprungen, da sie ordnungsgemäß funktioniert.

12
darkman

Überprüfen Sie, ob Ihr PHP-Code auch in UTF-8-Codierung vorliegt.

Kommentieren Sie die Zeile //$mail->CharSet="UTF-8"; und verschieben Sie sie ideell direkt nach der $mail = new PHPMailer(true);.

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

In Ihrem Code wird es nach der $mail->Send(); aufgerufen, daher hat die Zeichensatzeinstellung nicht gezählt ...

36
shadyyx

Ja, direkt nach dem "neuen PHPMailer (true);". Ich hatte das gleiche Problem mit:

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

und ändern zu:

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

das Akzentproblem gelöst.

0
Michel D