【问题标题】:PHP Mail freezePHP 邮件冻结
【发布时间】:2013-08-11 05:08:01
【问题描述】:

每次我使用 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。

【问题讨论】:

    标签: php email timeout


    【解决方案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.";
    }
    ?>
    

    【讨论】:

    • 我试过了。仅显示超出的致命错误时间。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多