我的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中更改它?
答案 0 :(得分:5)
更改smtp_port
仅会影响mail()
与SMTP
设置指定的服务器的交互方式。这不是问题。问题是:
首先,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用作中继主机
main.cf中的a)打开MAMP并在postfix中将外发邮件的域名更改为smtp.gmail.com
b)打开终端并输入
sudo vi /etc/postfix/main.cf
这将要求输入管理员密码,它将在vi编辑器中打开main.cfc)按ctrl + f并到达文件末尾并将光标从末尾向下移动一行并按 a ,编辑器现在将切换到插入模式以编辑文件
附加此设置
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
希望这可以帮助那些遇到同样问题的人。