2011-05-06 71 views
7

我的ISP已经阻止了从PHP发送邮件的端口25,而是允许使用端口587或465。我如何强制PHP邮件功能使用端口587而不是默认的25? BTW:我在OSX 10.6.6使用MAMP PRO将smtp端口从25更改为587?

更新:我试图改变php.ini中的设置来

[mail function] 
; For Win32 only. 
SMTP = localhost 
smtp_port = 587 

,因为我在Mac上不认为这能做些什么成为我的解决方案,并且在我尝试之后它不起作用。它给了我下面的错误信息。

May 6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2822]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out 
May 6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2823]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out 
May 6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2827]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out 
May 6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2825]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out 
May 6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2828]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out 

你看到它仍然试图通过端口25连接?我如何在mac中更改它?

回答

5

更改smtp_port只影响mail()如何与SMTP设置指定的服务器进行交互。这不是问题。这个问题是:

  1. 您在使用本机作为SMTP服务器 - 和
  2. 您的ISP阻止邮件中继的本地SMTP服务器(后缀)出来到Gmail

第一,read this thread。它讨论了同样的确切问题。结果是你需要使用不同的邮件服务器,最好是你的ISP邮件服务器。如果您想使用他们的电子邮件服务,您的ISP会告诉您使用哪种服务器和端口用于出站邮件?您应该能够在您的PHP本地运行中使用它,就像您使用Thundebird这样的电子邮件客户端,并且能够发送到Gmail。

+0

我使用Gmail的SMTP服务器,并编辑了一些后缀配置文件,它工作得很好。谢谢你的提示。 – 2011-05-07 04:54:24

3

在您的php.ini中设置smtp_port = 587。见http://php.net/manual/en/mail.configuration.php

编辑

如AJ指出,这不会,如果您使用的是本地后缀或者邮件发送,您可以通过指定smtp = localhost做解决问题。尝试将其设置为ISP的SMTP服务器地址。

如果在允许您发送邮件之前还需要验证,那么这可能会导致下一个问题,这是许多ISP所做的。在这种情况下,你最好的选择是Pear Mail package。顺便说一句,您还可以在脚本中指定邮件服务器和端口。从文档:

$params["host"] - The server to connect. Default is localhost. 
$params["port"] - The port to connect. Default is 25. 
$params["auth"] - Whether or not to use SMTP authentication. Default is FALSE. 
$params["username"] - The username to use for SMTP authentication. 
$params["password"] - The password to use for SMTP authentication. 
+0

它说只在Windows下使用,但你看到我在Mac上,我如何改变它在Mac? – 2011-05-06 14:58:42

+0

查看PHP手册中的评论:“尽管此页面提到的关于仅在Windows下使用的”SMTP“和”smtp_port“设置,所有Drupal站点都使用这些设置发送电子邮件,而不管它们在哪个操作系统中运行“。 – 2011-05-06 15:02:43

+0

我已更新我的帖子。请看看 – 2011-05-06 15:05:24

1

您可以编辑php.ini文件(如果你有机会),并设置smtp_port = 587或者在你的代码,ini_set('smtp_port', 587)

0

如果可以,请尝试用ini_set()覆盖smtp_port设置。 应该是这样的:

ini_set('smtp_port', 587); 
0

对于那些使用MAMP并且无法发送来自php mail()函数的邮件,因为端口25被ISP阻止(在我的情况下),这里有一些信息可以帮助您解决它。因为OSX使用postfix发送邮件,如果你打算使用外部smtp服务器,如smtp.gmail.com,我在这里使用的是你应该做的。你需要Postfix的配置使用Gmail作为中继主机

一)打开MAMP和后缀更改外发邮件的域名为smtp.gmail.com

B)打开终端输入sudo vi /etc/postfix/main.cf这将请输入您的管理员密码,然后在vi编辑器中打开main.cf

c)按ctrl + f并到达文件末尾,并将光标从最后一行向下并按a ,编辑器现在将切换到插入模式来编辑文件。

main.cf中追加此设置

relayhost = [smtp.gmail.com]:587 

smtp_tls_security_level = verify 
#smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt 
smtp_tls_session_cache_database = btree:/var/run/smtp_tls_session_cache 

smtp_sasl_auth_enable = yes 
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd 
smtp_sasl_security_options = noanonymous 

:WQ退出Vim。早在上壳式sudo vi /etc/postfix/sasl_passwd并输入以下内容(代替您的Gmail地址和Gmail密码):

[smtp.gmail.com]:587 [email protected]:mypassword 

再按:WQ保存并退出该文件,并运行以下命令

sudo postmap /etc/postfix/sasl_passwd 
sudo postfix reload 

希望这可以帮助有我面临同样问题的人。

相关问题