每次我用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来显示错误日志进行调试。您可以通过将以下代码放在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.";
}
?>
在Windows上的PHP中,您必须在php.ini
文件中提供SMTP服务器。如果SMTP配置指令配置正确,请检查您的配置。超时可能是因为PHP无法访问正确的服务器。
查看PHP邮件()超时。我怀疑你也有类似的问题。
此外,请确认您在php.ini中使用的设置是您的互联网服务提供商(如果您是通过localhost执行此操作)或托管提供商(如果你正在为服务器使用托管服务)建议的设置。一些提供商要求对传出的电子邮件进行不稳定的设置。