在phpmailer中添加HTML格式

21

我正在使用 PHPMailer 将在线表单直接发送到电子邮件。我想按照以下方式编辑表单:

$message = '<p>The following request was sent from: '</p>;
$message .= '<p>Name: '.$name.'</p><br />';
$message .= '<p>Phone: '.$phone.'</p><br />';
$message .= '<p>Email: '.$email.'</p><br />';

但是,在我收到的电子邮件中,我得到了<p><br />等标签。这不是我想要的格式,而是实际的HTML代码。它一直对我有用,然后我意识到我正在使用默认的PHP mail函数。我不确定PHP Mailer是否有不同的参数,或者我是不是漏掉了一些细节?

在哪里设置文本/ HTML的标题?

    $mail = new PHPMailer();
    $mail -> IsSMTP();
    $mail -> Host = "---";
    $mail -> Port = 25;
    $mail -> SMTPAuth = false;
    $mail -> Username = EMAIL_USER;
    $mail -> Password = EMAIL_PASS;
    $mail -> FromName = $from_name;
    $mail -> From = $from;
    $mail -> Subject = $subject;
    $mail -> Body = $message;
    $mail -> AddAddress("---");

    $result = $mail -> Send();
2个回答

49
在 PHP 邮件发送器中,您需要设置以下内容:
$mail->IsHTML(true);

注意:$mail 意味着你的 PHPMailer 对象。
参考链接:PHPMailer

33

默认情况下,PHP的mail()函数是text/plain

在你的mail()头部中,将content-type更改为text/html并尝试。

示例:

<?php 
    $body = "<html>\n"; 
    $body .= "<body style=\"font-family:Verdana, Verdana, Geneva, sans-serif; font-size:12px; color:#666666;\">\n"; 
    $body = $message; 
    $body .= "</body>\n"; 
    $body .= "</html>\n"; 

    $headers  = "From: My site<noreply@example.com>\r\n"; 
    $headers .= "Reply-To: info@example.com\r\n"; 
    $headers .= "Return-Path: info@example.com\r\n"; 
    $headers .= "X-Mailer: Drupal\n"; 
    $headers .= 'MIME-Version: 1.0' . "\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

    return mail($recipient, $subject, $message, $headers); 
?>

PHP邮件程序:

您需要设置IsHTML(true)

$mail->IsHTML(true);

1
展示你的PHP mail() 函数声明。或者查看我的更新答案。 :) - Praveen Kumar Purushothaman
好的,我现在没有使用PHP邮件功能,但是现在我想起来了,每次使用时我总是确保加上text/html。在OO PHPHmailer中,我没有看到设置这个的地方。我会添加我的代码以展示我所拥有的。 - TheLettuceMaster
3
在 PHP Mailer 中设置 IsHTML(true) - Praveen Kumar Purushothaman
我看到在电子邮件正文中,您包含了HTML和BODY标签。发送电子邮件时是否必要?是良好的实践吗?目前我只是在没有HTML和BODY标签的情况下对正文进行样式设置。 - Vince

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接