2013-05-30 57 views
0

我有一个托管PHP应用程序的本地服务器。我的应用程序发送电子邮件到不同的地址但是,我注意到我无法弄清楚的一个问题。它将电子邮件发送到内部地址,但不会将邮件发送到外部地址。我的SMTP服务没有向外部地址发送消息

我在同一个网络上也有交换服务器。所以,比如我有这2个“内部域”

domain1.com domain2.com

如果我执行从我的应用这个PHP函数它就会没有问题交付

mail("[email protected]","Test Subject","Test message"); 

然而,如果我尝试sening消息到Gmail,雅虎或任何外部域不发送

mail("[email protected]","Test Subject","Test message"); 

我的服务器是在Windows 2008上运行SERV通过IIS6在其上安装PHP5.3.19的R2 R2

如何解决此问题?

+0

检查您的邮件日志... –

+0

这实际上意味着什么:“不发送它”?如果你发现,你有你的事业,因此你的解决方案。但是我们无法猜测系统内部发生了什么。你将不得不亲自看看日志文件... – arkascha

+0

不发送意味着他们不去任何人。昨天,我收到邮局主管发来的电子邮件通知,通知我邮件已经延迟。你能指点我正确的方向吗?日志文件位于哪里? – Mike

回答

0

mail()在Windows上需要php.ini中的额外配置,因为Windows没有Sendmail或类似的东西。

第一个是SMTP设置,它应该指向您的ISP的出站服务器,它不一定是您从中检索邮件的服务器。当我在支持部门工作时,有很多问题需要您描述,因为入站服务器仍然会接受邮件,但仅限于本地域。

第二个是sendmail_from设置,这是PHP为每个SMTP事务使用的蹩脚的小邮件程序PHP所使用的内容,无论标头中包含什么内容。在* nix Sendmail将读取头文件并获取From:地址,在Windows上PHP将始终使用php.ini中的内容。如果这是一个“垃圾”地址,如[email protected]或某个不存在的域名,许多邮件服务器会直接拒绝它。我的建议是将其更改为php.ini中点正经以及添加以下行到你的邮件脚本:

ini_set('sendmail_from', $from_address); 

或者,只是用PHPmailer因为它只是作品要比PHP的更好可怕的小mail()功能。

+0

感谢您在这里的详细解释。关于第二种解决方案,我不认为这是因为我已经列出了一个有效的电子邮件地址,所以这消除了作为一个选项。不过,我认为第一个答案很好,但我需要你的帮助来解决它。当谈到服务器和传输协议以及所有好东西时,我并不擅长。这是我的第一次经历。那么我怎么知道我的ISP的出站服务器是什么?我在哪里列出?我的网络上有一台交换服务器,我们用它来发送电子邮件。 – Mike

+0

@Mike如果您不确定哪台服务器用于出站,请询问。而php.ini中的设置实际上命名为'SMTP',例如:'SMTP = smtp.somedomain.com' – Sammitch

相关问题