将 SMTP 端口从 25 更改为 587


change smtp port from 25 to 587?

我的ISP阻止了端口25从PHP发送邮件,而是允许使用端口587或465。 如何强制 PHP 邮件功能使用端口 587 而不是默认的 25?顺便说一句:我在OSX 10.6.6上使用MAMP PRO

更新:我尝试将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 中更改它?

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

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

首先,阅读此线程。 它讨论了完全相同的问题。 结果是您需要使用不同的邮件服务器,最好是您的 ISP 邮件服务器。 如果您想使用他们的电子邮件服务,您的 ISP 会告诉您使用什么服务器和端口进行出站邮件? 您应该能够从本地运行的PHP中使用它,就像使用Thundebird等电子邮件客户端一样 - 并且您将能够发送到Gmail。

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

编辑

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

如果它们在允许您发送邮件之前还需要身份验证,则可能会导致下一个问题,许多 ISP 都会这样做。在这种情况下,您最好的选择是梨邮件包。顺便说一下,这也允许您在脚本中指定邮件服务器和端口。从文档中:

$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.

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

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

ini_set('smtp_port', 587);
对于那些使用

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

a) 打开 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 user@gmail.com:mypassword

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

sudo postmap /etc/postfix/sasl_passwd
sudo postfix reload

希望这可以帮助遇到与我相同的问题的人。