对于我的项目,我必须创建一个发送两封电子邮件的功能。一个给顾客,另一个给卖家。这两封电子邮件都有不同的内容。
我使用标准的PHP邮件功能编写了这两个函数,如下所示。
$to = "xxxx@xxxx.com";
$subject = 'xxxx';
$message = "hello"
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($to, $subject, $message, $headers);
现在,在我自己公司的网络服务器上测试系统时,似乎发送和接收了两封电子邮件。但是,当我将同一系统迁移到外部服务器时。只发送一封电子邮件。主要是堆栈中的第一封电子邮件。
虽然我怀疑这个问题与后来的服务器配置有关,但我想知道我应该去哪里调试这个问题。
答案 0 :(得分:1)
您的“已发布”代码中有一些内容丢失了。
$message = "hello"
末尾缺少一个分号(除非是错字/粘贴错误?)和第一个$headers
此外,没有From:
标头属性肯定会导致发送电子邮件并被视为垃圾邮件。
修复了这些问题并添加了额外的标题信息后,以下代码工作并没有在我的垃圾邮件中结束,但是INBOX成功了。
<?php
$to = "xxxx@xxxx.com";
$email = "email@example.com";
$subject = 'xxxx';
$message = "hello";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: $email" . "\r\n" .
"Reply-To: $email" . "\r\n" .
"X-Mailer: PHP/" . phpversion();
mail($to, $subject, $message, $headers);
?>
或成功回复消息:
<?php
$to = "xxxx@xxxx.com";
$email = "email@example.com";
$subject = 'xxxx';
$message = "hello";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: $email" . "\r\n" .
"Reply-To: $email" . "\r\n" .
"X-Mailer: PHP/" . phpversion();
if(mail($to, $subject, $message, $headers))
{
echo "Message sent.";
}
else{
echo "Something went wrong.";
}
?>
访问PHP.net网站,了解有关mail()
和header()
功能的更多信息。