1

每次我使用 php 发送邮件时,站点都会冻结 120 秒,然后才会吐出超出的致命错误超时。我试图通过仅使用以下代码创建一个站点来隔离问题:

 $to = 'my mail here';
            $subject        = 'invite';
            $from           = 'from our mail';
            $message        = 'asdf';

            if(mail($to, $subject, $message))
            {
                    echo 'sent to ' . $to;
            } else {
                    echo 'error';
            }

但这也不起作用。邮件有时会被发送,这真的让我很烦。我该如何调试呢?我在 Windows 上使用 Apache。

4

3 回答 3

1

尝试通过使 php 显示错误日志来进行调试。您可以通过将以下代码放置在您的 php 代码顶部来使用以下代码:

<?php 
error_reporting(-1);
?>

我在您的电子邮件发送代码中注意到的另一件事是它不包含标题。标题是电子邮件功能正常工作所必需的。

<?php
$to = "testing@example.com";
$subject = "Test mail";
$message = "This is a test email message.";
$from = "testing1@example.com";
$headers = "From:" . $from;
if(mail($to,$subject,$message,$headers)){
    echo "Mail is Sent.";
}else{
    echo "Mail not sent.";
}
?>
于 2013-08-09T09:47:16.180 回答
0

在 Windows 上的 PHP 中,您必须在php.ini文件中提供 SMTP 服务器。如果您正确配置了SMTP 配置指令,请检查您的配置。由于 PHP 无法访问正确的服务器,可能会发生超时。

于 2013-08-09T10:04:45.463 回答
0

查看PHP mail() timeout。我怀疑你有类似的问题。

此外,请确认您在 php.ini 中使用的设置是您的 Internet 服务提供商(如果您通过 localhost 执行此操作)或您的托管服务提供商(如果您为您的服务器使用托管服务)推荐的设置。一些提供商需要外发电子邮件的不稳定设置。

于 2013-08-09T15:38:31.797 回答