1

我不熟悉 PHP,也无法真正找到解决我问题的具体方法。我们在印度外包了一个后端项目,他们的部分任务是创建一个带有电子邮件确认的登录。

以下是部分代码:

$sql     = "SELECT * FROM `users` WHERE `email`='$name' AND `status`= 1";
$result  = $db->select($sql);
$num_row = $db->numrows($sql);
if($num_row > 0) {
    $row= $db->fetcharray($sql);

    $Password   =   $row['password'];
    $body       = "Dear ".$row['fname']." <br> <br>";
    $body       .= "Your password is : ".$Password." <br> <br>";
    $body       .= "Please login with below link : <br/>";
    $body       .= SITE_URL;

    $email           = $row['email'];
    $messageSubject  = "Forgot Password : Quicksl";
    $messageBody     = $body;   

    sendContactMail(SENDER_NAME,SENDER_EMAIL,$messageBody,$email,$messageSubject);
    echo "matched";

但是,当我们收到一封电子邮件时,它仍然包含<br>来自 HTML 的标签,而不是将其呈现为 HTML。

它与语法有什么关系吗?从上面的代码中,如何在 PHP 中格式化电子邮件,以便电子邮件中没有<br>标签,但它从新行开始?

如果我没有把我的问题说清楚,请告诉我。

4

2 回答 2

8

您需要添加

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

$headers并作为 PHP 函数的最后一个参数传递mail,无论它在哪里。

于 2012-12-17T17:48:38.203 回答
0

您需要在标题中指定这是一封 html 电子邮件,以便将其解释为 html 而不是纯文本。

http://php.net/manual/en/function.mail.php

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$Password   =   $row['password'];
$body       = "Dear ".$row['fname']." <br> <br>";
$body       .= "Your password is : ".$Password." <br> <br>";
$body       .= "Please login with below link : <br/>";
$body       .= SITE_URL;
$email           = $row['email'];
$messageSubject  = "Forgot Password : Quicksl";
$messageBody     = $body;   

sendContactMail(SENDER_NAME,SENDER_EMAIL,$messageBody,$email,$messageSubject,$headers);

于 2012-12-17T17:58:25.833 回答