我有一个发送电子邮件的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”发送的
有没有人知道为什么这不起作用?
由于
答案 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/