0

对于我的项目,我必须创建一个发送两封电子邮件的函数。一个给客户,另一个给卖家。两封电子邮件将有不同的内容。

我使用标准的 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);

现在,在我自己公司的网络服务器上测试系统时,两封电子邮件似乎都已发送和接收。但是,当我将同一系统迁移到外部服务器时。只发送一封电子邮件。主要是堆栈中的第一封电子邮件。

虽然我怀疑这个问题与后来的服务器配置有关,但我想知道接下来应该去哪里调试这个问题。

4

1 回答 1

1

您的“已发布”代码中缺少一些内容。

末尾缺少分号$message = "hello"(除非这是拼写错误/粘贴错误?)和第一个点$headers

此外,没有From:标头属性肯定会导致电子邮件被发送到并被视为垃圾邮件。

修复了这些问题并添加了额外的标头信息后,以下代码可以正常工作并且没有出现在我的垃圾邮件中,但收件箱成功了。

<?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()函数的更多信息。

于 2013-11-14T19:37:22.390 回答