将smtp端口从25改为587?

时间:2011-05-06 14:52:56

标签: php email port

我的ISP已阻止端口25从PHP发送邮件,而是允许使用端口587或465。我如何强制php邮件功能使用端口587而不是默认25? BTW:我使用MAMP PRO

在OSX 10.6.6上

更新:我尝试将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 个答案:

答案 0 :(得分:5)

更改smtp_port仅会影响mail()SMTP设置指定的服务器的交互方式。这不是问题。问题是:

  1. 您正在使用本地计算机作为SMTP服务器 - AND
  2. 您的ISP阻止本地SMTP服务器(后缀)将邮件转发到Gmail
  3. 首先,read this thread。它讨论了同样的问题。结果是您需要使用不同的邮件服务器,最好是您的ISP邮件服务器。如果您想使用他们的电子邮件服务,您的ISP会告诉您哪些服务器和端口用于出站邮件?您应该可以在本地运行的PHP中使用此功能,就像Thundebird这样的电子邮件客户端一样 - 您能够发送到Gmail。

答案 1 :(得分:3)

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

修改

正如AJ所说,如果您使用本地postfix或sendmail,这将无法解决问题,您可以通过指定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.

答案 2 :(得分:1)

您可以编辑php.ini文件(如果您有权访问)并设置smtp_port = 587或代码ini_set('smtp_port', 587)

答案 3 :(得分:0)

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

ini_set('smtp_port', 587);

答案 4 :(得分:0)

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

  

a)打开MAMP并在postfix中将外发邮件的域名更改为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。返回shell类型sudo vi /etc/postfix/sasl_passwd并输入以下内容(替换您的gmail地址和gmail密码):

[smtp.gmail.com]:587 user@gmail.com:mypassword

再次按:wq 保存并退出文件,然后运行以下命令

sudo postmap /etc/postfix/sasl_passwd
sudo postfix reload

希望这可以帮助那些遇到同样问题的人。