我不熟悉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";
但是,当我们收到电子邮件时,它仍然包含HTML中的<br>
个标记,而不是将其呈现为HTML。
是否必须对语法做任何事情?如何使用上面的代码在PHP中格式化电子邮件,以便电子邮件中没有<br>
个标签,但它是从新行开始的?
如果我没有明白我的问题,请告诉我。
答案 0 :(得分:8)
您需要添加
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
并将$headers
作为PHP mail
函数的最后一个参数传递,无论它在哪里。
答案 1 :(得分: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);