PHP在Windows上发送邮件,导致它在发送电子邮件后“挂起”

时间:2009-08-27 18:52:31

标签: php windows smtp email

我们正在开始构建一个Web应用程序。我的同事正在开发linux,我正在通过运行windows xp的WAMP堆栈运行。我们正在使用Zend。

当我们提交表单并使用Zend电子邮件发送电子邮件时,电子邮件将发送,然后我会得到一个空白屏幕,在linux机器上,该应用程序将继续正常。

所以我写了我自己的小脚本,mail.php,它使用phpmailer - 完全相同的事情发生了,电子邮件发送,然后是空白屏幕。所以我们有:

if(!$mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent";
}

因此没有报告错误,电子邮件发送,但“已发送消息”从未打印到屏幕上(或其他任何内容,也是正常的HTML)。

我不是很技术,如果有明显的调试步骤,请道歉。是否有一些我错过的Windows php配置特有的东西?

这是一个带身份验证的异地SMTP服务器。

4 个答案:

答案 0 :(得分:1)

听起来你得到了一个错误,但却没有看到它。确保在代码中的某处

ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

并检查您的apache日志以查找500个错误。

答案 1 :(得分:1)

PHP有自己的错误日志,如有疑问请查看。您应该能够通过运行

找到它
<?php
phpinfo();
?>

它应该位于 PHP Core 部分 - 如果它是空白的,请编辑您的php.ini文件并打开 log_errors 并指定您希望文件的位置

错误我无法显示我发现使用它。

<强>更新

根据文档的说法,Zend_Mail实际上是PHP的mail()函数的包装器,并且似乎有些挖掘:http://framework.zend.com/manual/en/zend.mail.html

考虑到这一点,PHP手册中有关于PHP的mail()函数的一些信息,您将要查看有关SendMail http://www.php.net/manual/en/ref.mail.php页面上的第一条评论(截至撰写本文时)关于将WAMP服务器配置为* nix服务器的所有细节 - 至少就mail()操作而言; - )

答案 2 :(得分:1)

我在一个Windows框(我的开发机器)上成功使用phpmailer。我能看到设置代码吗?我做了类似下面的事情。有一件事是你需要确保在php中安装openssl模块,如果你使用的是ssl。看看下面的内容。确保您的SMTPDebug标志设置为具有可以使用的输出。

<?php

$mail             = new PHPMailer();

$mail->IsSMTP();
$mail->Host       = "blah.com";
$mail->SMTPDebug  = 1;
$mail->SMTPAuth   = true;
$mail->SMTPSecure = "ssl";
$mail->Host       = "mail.blah.com";
$mail->Port       = 465;
$mail->Username   = "noreply@blah.com";
$mail->Password   = "smtppass";

$mail->SetFrom('noreply@blah.com', 'Blah Name');
$mail->AddReplyTo("noreply@blah.com", "Blah Name");
$mail->Sender = "noreply@blah.com"

?>

答案 3 :(得分:0)

很抱歉花了很长时间才回答这个问题。问题是由办公室中的防火墙阻止出站SMTP流量引起的。我仍然不确定为什么它什么也没有返回 - 但是在这个办公室之外,当它被测试时,无效smtp等的php错误返回正常。只是在网络上允许获得适当端口的情况。

感谢大家的帮助。