PHP邮件功能不起作用

时间:2010-10-31 22:53:42

标签: php email

我有一个发送电子邮件的PHP脚本。它看起来像这样:

<?php
 // subject
 $subject = "$first_name $last_name has sent you a message on The Red-line";

 // message
 $message = "<html>
    <head>
     <title>
      The Red-line
     </title>
    </head>
    <body>
     <p>
      Hi $war_first, 
     </p> <br />

      <p>
       $first_name $last_name has sent you a message on the Red-line. To view your message, please login to <a href='www.thered-line.com'>the Red-line.</a>
      </p> <br />

      <p>
       Sincerely,
      </p> <br />

      <p>
       The Red-line Operator
      </p> 
    </body>
    </html>";

//  To send HTML mail, the Content-type header must be set
 $headers    =  'MIME-Version: 1.0' . "\r\n";
 $headers   .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

//  Additional headers
 $headers   .=  "From: The Red-line messages@theredline.com \r\n";
 $headers   .=  "To: $war_first $last_war <$war_mail>\r\n";

//  Mail it
 mail($war_mail, $subject, $message, $headers);
?>

当我在远程服务器上测试时,我使用此脚本通过turbocapitalist1987@yahoo.com向我的收件箱发送电子邮件。我收到了电子邮件,但“来自”部分不起作用。雅虎说我的电子邮件是从“the@yahoo.com”发送的

有没有人知道为什么这不起作用?

由于

3 个答案:

答案 0 :(得分:3)

对于From标头,请将实际地址用< >

括起来
$headers .= "From: The Red-line <messages@theredline.com> \r\n";

当您同时拥有显示名称和电子邮件地址时,这是correct format。我猜雅虎正在将第一个单词“The”解释为整个电子邮件地址,并为该域名提供了默认(yahoo.com)。

答案 1 :(得分:1)

<>似乎是您的问题,应该是:

$headers .= "From: The Red-line <messages@theredline.com> \r\n";

其次,在Unix / Linux上,您必须在服务器上配置有效的MTA(即:sendmail,postfix等),以便直接中继邮件,或通过Smart Host。如果您使用的是Windows,则必须在php.ini中配置SMTP服务器。

答案 2 :(得分:0)

我建议使用预先构建的PHP电子邮件库,例如:http://swiftmailer.org/