2012-01-29 69 views
0

我从我的PHP脚本收到以下错误某些WiFi网络:反正绕过错误:无法连接在“localhost”的端口,邮件服务器25

消息:电子邮件()[function.mail]:失败要连接到邮件服务器在“本地主机”端口25,验证您的“SMTP”和“smtp_port”设置在php.ini或使用ini_set()

我完全理解错误,并意识到它取决于哪个互联网连接我'开启并设置其SMTP /端口25。

事情是我背包世界各地,永远不知道我会在什么样的连接,所以理想情况下,如果SMTP端口25上没有smtp,我只想让我的代码绕过它并携带在邮件上没有错误() - 我不在乎它是否不发送邮件 - 我只是想让我的页面加载!

我想出了迄今为止最好的解决办法是有一个像这样并取消PHP代码需要的时候:

//if (1==1) { 
if (mail($to, $subject, $emailConfirmationHTML, $headers)) { 

有什么事我可以把在PHP - 或者Apache的成立,以帮助我出去了?

+1

'localhost'是W上机你正在运行Apache。这与您所连接的网络无关 - 或者至少不应该这样。你应该检查你的机器是否有一个'local'映射到'127.0.0.1'的'hosts'条目。 – Borealid 2012-01-29 06:11:00

+0

这只是一个E_WARNING级别的错误,您的网页仍应加载正常。也许你的问题是错误处理。 – animuson 2012-01-29 06:21:44

回答

0

我认为简单的解决方案是将语句包装在try catch块中,处理异常并继续。
理想情况下,如果您希望能够从任何地方发送邮件,则应查找邮件中继,搜索“邮件中继”,然后您会看到许多可用的服务。

+0

您无法捕获错误,您需要先将它们转换为Exception。 – hakre 2012-01-29 14:14:40

+0

确切地说,这并不遗憾的是工作: \t \t尝试{ \t \t \t如果(电子邮件($到,$主题,$ emailConfirmationHTML,$头)){ \t \t \t \t $ emailConfirmationResponseXML = “” ; \t \t \t \t \t}其他{ \t \t \t \t $ emailConfirmationResponseXML = “失败”; \t \t \t \t \t} \t \t}赶上(例外$ E){ \t \t \t $ emailConfirmationResponseXML = “”; \t \t \t \t} – 2012-01-31 00:09:49

0

你可以配置你的smtp服务器来监听你的系统有的任何IP地址。在大多数情况下,sendmail是最好的选择。

在sendmail的这个配置将帮助您:

SMTP守护进程选项

ØDaemonPortOptions =口= SMTP,地址= 0.0.0.0,名称= MTA

修改你的/ etc /邮件/ sendmail.cf(或者是任何一个是),并设置地址在SMTP守护进程选项0.0.0.0

问候, MAGMAG

+0

在这个时代,Sendmail几乎不再是默认选择。特别是对于仅配置本地传出邮件假脱机,更简单的事情将是适当的。如果你想为偶尔用户推荐一个完整的MTA制作MTA,我会选择Postfix。 – tripleee 2012-01-29 08:13:36

相关问题