PHPMailer IsHTML(true)不起作用

时间:2014-06-25 03:58:41

标签: php email phpmailer

我正在尝试从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。这会导致任何问题吗?请帮忙。

2 个答案:

答案 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,那么