2012-12-17 78 views
1

我对PHP不熟悉,无法真正找到针对我的问题的特定解决方案。我们在印度外包了一个项目作为后端,他们的一部分任务是创建一个带有电子邮件确认的登录。使用PHP,html格式的电子邮件确认电子邮件

下面是部分代码:

$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>标签,但它是从新行开始的?

让我知道如果我没有明确提出我的问题。

+3

什么的sendContactMail()函数的代码? –

+0

快速搜索“电子邮件Mime类型” –

+0

您需要查看sendContactMail的代码,这不是PHP函数AFAIK,因此它必须是自定义的,您需要查看该代码以解决您的问题。 – Codeguy007

回答

8

您需要添加

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

,并通过$headers作为PHP mail函数的最后一个参数,无论是。

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);

+0

我在哪里完全插入,我只是试图把它放在上面,但它没有工作,所以我需要指定其他任何东西,有一个巨大的if/else语句登录,所以我不知道代码去哪里 – Vlad

+0

@Vlad通过头传递给你的sendContactMail函数,并使用该函数中的标题,如更新中所示回答 – Ghostman

+0

我已经尝试过,但它没有工作,有没有办法在这里附加整个文件? – Vlad