我们正在开始构build一个Web应用程序。 我的同事正在linux上开发,并且通过运行windows xp的WAMP堆栈运行。 我们正在使用Zend。
当我们提交表单并使用Zend电子邮件发送电子邮件时,电子邮件将发送,然后我会得到一个空白的屏幕,在Linux机器上的应用程序将继续正常。
所以我写了我自己的小脚本,使用phpmailer的mail.php – 同样的事情发生,电子邮件发送,然后空白屏幕。 所以我们有:
if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message has been sent"; }
所以没有错误报告,电子邮件发送,但“消息已发送”从不打印到屏幕(或其他任何东西,普通的HTML也)。
我不是很技术,所以如果有明显的debugging步骤,我们表示歉意。 有没有什么奇怪的Windows的PHPconfiguration,我已经错过了?
这是一个具有身份validation的非现场SMTP服务器。
听起来像是你正在得到一个错误,但只是没有看到它。 确保你的代码中有这个地方
ini_set( 'display_errors', 1 ); error_reporting( E_ALL );
并检查您的Apache日志500错误以及。
PHP有它自己的错误日志,当有疑问检查那里。 你应该可以通过运行来找到它
<?php phpinfo(); ?>
它应该位于PHP核心部分 – 如果它是空白的,编辑你的php.ini文件并打开log_errors并指定你想要的文件的位置。
我无法显示的错误我发现使用这个。
UPDATE
做了一些挖掘,似乎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服务器一样的详细信息 – 至少就邮件()操作而言是如此;-)
我用一个窗口框(我的开发机器)上成功的phpmailer。 我可以看到设置代码吗? 我做下面的事情。 有一件事是你需要确保openssl模块安装在PHP中,如果你使用的是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" ?>
为了回答这个问题,我们抱歉抱歉。 问题是由于办公室中的防火墙阻塞了出站SMTP流量造成的。 我仍然不确定为什么它什么都没有返回 – 但在这个办公室以外,当它被测试时,php错误为无效的smtp等返回罚款。 只是在网络上获得适当的端口的情况。
感谢大家的帮助。