我正在尝试从PHPMailer发送电子邮件。一切正常,但问题是即使在写$mail->IsHTML(true);
之后,它也会发送电子邮件和HTML标签。以下是我发送电子邮件的代码。
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->SMTPSecure = EMAIL_COMPOSE_SECURE;
$mail->Host = EMAIL_COMPOSE_SMTP_HOST;
$mail->Port = EMAIL_COMPOSE_PORT;
$mail->Username = EMAIL_COMPOSE_OUTGOING_USERNAME;
$mail->Password = EMAIL_COMPOSE_OUTGOING_PASSWORD;
$mail->SetFrom(EMAIL_COMPOSE_INCOMING_USERNAME);
$mail->Subject =$subject;
$mail->Body = $message;
$mail->IsHTML(true);
$mail->AddAddress($email_to);
if(!$mail->Send()){
echo "Mailer Error: " . $mail->ErrorInfo;
}
else{
echo "Message has been sent";
}
还有一件事我要提到,在我的应用程序文本编辑器中编写电子邮件是ckeditor。这会导致任何问题吗?请帮忙。
答案 0 :(得分:4)
如果您致电IsHTML(true)
,为什么不希望它使用HTML?这就是你告诉PHPMailer将你的邮件正文视为HTML的方式!如果您不希望HTML作为内容类型,请调用IsHTML(false)
,或者根本不调用它,因为纯文本是默认值。
如果您同时需要HTML和纯文本,请改为调用msgHTML($html)
,它也会为您处理HTML->文本转换。
正如克里斯所说,在设置IsHTML
之前致电Body
。
正如Dagon所说,如果你把HTML放在$message
中,它会发送HTML ...
答案 1 :(得分:0)
除非我误解了您的问题,否则应该发送HTML标记。检查收到的电子邮件是否Content-Type:
为text/html
。
它必须为另一侧的客户端发送HTML标签才能正确显示它。如果邮件包含HTML标记但您不想要标记,那么您需要调用IsHtml(false)
,并且您需要实际从邮件中删除HTML。
并非所有电子邮件客户端都可以阅读HTML标记。因此,如果您因为客户无法呈现HTML或Content-Type:
为text/plain
而无法看到HTML,那么