PHPMailer在消息中显示HTML实体
我在消息中显示phpMail和HTML实体时遇到问题 例如: 你好,我是PHPMailer在消息中显示HTML实体,php,phpmailer,Php,Phpmailer,我在消息中显示phpMail和HTML实体时遇到问题 例如: 你好,我是'd it和#39这里是大卫,诸如此类 以下是我用于PHPMailer的设置: $name = trim(filter_input(INPUT_POST, "name", FILTER_SANITIZE_STRING)); $phone = trim(filter_input(INPUT_POST, "phone", FILTER_SANITIZE_STRING)); $email = trim(filter_inpu
'代码>d it<代码>和#39代码>这里是大卫,诸如此类
以下是我用于PHPMailer的设置:
$name = trim(filter_input(INPUT_POST, "name", FILTER_SANITIZE_STRING));
$phone = trim(filter_input(INPUT_POST, "phone", FILTER_SANITIZE_STRING));
$email = trim(filter_input(INPUT_POST, "email", FILTER_SANITIZE_EMAIL));
$message = trim(filter_input(INPUT_POST, "message", FILTER_SANITIZE_SPECIAL_CHARS));
$emailBody = "";
$emailBody .= "Name: " . $name . "\n";
$emailBody .= "Phone: " . $phone . "\n";
$emailBody .= "Email: " . $email . "\n";
$emailBody .= "Message: " . $message . "\n";
$mail = new PHPMailer;
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mailer->Host = 'tls://smtp.gmail.com';
$mailer->SMTPAuth = true;
$mailer->SMTPSecure = 'tls';
$mailer->Port = 587;
$mail->Username = "*********@gmail.com";
$mail->Password = "***********";
$mail->CharSet = 'utf-8';
$mail->Encoding = 'base64';
$mail->setFrom('some@example.com');
$mail->addReplyTo($email, $name);
$mail->addAddress('someone@example.com', 'Some One');
$mail->Subject = 'Site Message From: ' . $name;
$mail->Body = $emailBody;
if(!$mail->send()) {
$msg .= "Mailer Error: " . $mail->ErrorInfo;
exit;
}
对此的任何帮助都将不胜感激:)只需添加$mail->IsHTML(true)代码>上面的字符集声明我设法解决了这个问题。然后,我需要更改表单变量,以改进通过电子邮件接收时的格式:
$emailBody .= "Name: " . $name . "<br />";
$emailBody .= "Phone: " . $phone . "<br />";
$emailBody .= "Email: " . $email . "<br />";
$emailBody .= "Message:<br />" . $message;
$emailBody.=“名称:”$名称“
”;
$emailBody.=“电话:”$电话。“
”;
$emailBody.=“电子邮件:”$电子邮件。“
”;
$emailBody.=“邮件:
”$消息
感谢评论者花时间提供帮助:)我在尝试发送一个符号(&
)时遇到了类似的问题;它在电子邮件中显示为&代码>
在构建电子邮件时,我只需在变量上使用html\u entity\u decode()
例如:
$mail->Subject = 'A message from ' . html_entity_decode($name);
它在$emailBody中吗?您在哪里设置变量?看起来您是以纯文本而不是HTML消息的形式发送消息。如果您var\u dump($emailBody)
(或$message
)在发送邮件之前,邮件是否已包含HTML实体?请将其添加到问题中,而不是添加到注释中,这很难阅读。此外,目的是了解您包括哪些内容。我想问题出在$message中,对吗?你能告诉我们这些变量来自哪里吗?您是否可能正在执行类似于$message=htmlspecialchars($\u POST['message'])的操作代码>?啊,好吧,这确实是一个解决办法,而不是一个解决方案。最初的问题(在您不想要的地方引入随机HTML实体)很可能是由于您使用了FILTER\u SANITIZE\u SPECIAL\u CHARS
。