Gmail SMTP问题

4
我有一个使用Gmail SMTP服务器发送电子邮件的问题。
让我解释一下我的情况。一周前,我可以使用SMTP使用PHP发送电子邮件。昨天,我的主机将他们的网站(包括我的)转移到了另一台服务器上。之后我就无法发送电子邮件了。 我在本地计算机上测试了电子邮件脚本,它完全正常工作。
我目前正在使用PHPMailer发送电子邮件。当出现错误时,我启用了PHP脚本上的调试功能。我在远程Web服务器和本地计算机上运行了启用调试的版本。
以下是输出: 本地计算机(正常工作)
SMTP -> FROM SERVER:220 mx.google.com ESMTP dj6sm9229359qab.3 
SMTP -> FROM SERVER: 250-mx.google.com at your service, [155.41.29.55] 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 250 ENHANCEDSTATUSCODES 
SMTP -> FROM SERVER:250 2.1.0 OK dj6sm9229359qab.3 
SMTP -> FROM SERVER:250 2.1.5 OK dj6sm9229359qab.3 
SMTP -> FROM SERVER:354 Go ahead dj6sm9229359qab.3 
SMTP -> FROM SERVER:250 2.0.0 OK 1350437987 dj6sm9229359qab.3 
Message sent!

远程服务器(无法正常工作)
SMTP -> FROM SERVER:220-gds-wh1.get-sourced.net ESMTP Exim 4.80 #2 Tue, 16 Oct 2012 21:00:32 -0500 220-We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail. 
SMTP -> FROM SERVER: 250-gds-wh1.get-sourced.net Hello gds-wh1.get-sourced.net [63.141.244.218] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-AUTH PLAIN LOGIN 250 HELP 
SMTP -> ERROR: Password not accepted from server: 535 Incorrect authentication data 
SMTP -> FROM SERVER:250 Reset OK 
SMTP Error: Could not authenticate. Mailer Error: SMTP Error: Could not authenticate.

如果你仔细观察,在我的本地机器上,调试信息中似乎有Google的mx-server地址,但在远程机器上则有主机提供商的信息。我不知道这是否正常。我完全不知所措。你能帮我或给我一些线索吗?谢谢,Vidhu。
2个回答

2
您的托管提供商似乎正在捕获出站SMTP请求并将其转发到自己的SMTP服务器。
您是否在端口25上连接到Google?请改为在端口587,即SMTP提交端口上连接。如果您已经使用了587,并且您的托管提供商正在捕获此流量,则向他们发送一封非常恶劣的电子邮件,威胁要立即切换托管提供商,如果他们不立即停止干扰您的Web应用程序。这种胡闹可能会被住宅电话和DSL用户容忍,但对于Web托管和协作来说完全不合适。
如果您的提供商做得好,他们将道歉并指向其条款和条件中的部分,指出出站SMTP流量现在将自动重定向,直到通过支持票证明放置删除请求为止。
顺便说一句,您的新托管提供商现在已捕获您与Google进行身份验证的凭据。是时候更改密码并实施TLS了,尽管据我所知,phpMailer不支持TLS。
也许现在是看看Swiftmailer或像Postmark这样的商业提供者的时候了?

我应该向右滚动他的代码,我没有看到拒绝文本。我的错。 - VictorKilo
看起来你是对的!嗯,这些家伙不是专攻网页托管,而是专注于Minecraft服务器托管,所以这一次我就放过他们了 :P cPanel中的一个设置确实会限制我的SMTP请求并强制我使用他们的。 - Krimson
太好了,我很高兴能帮忙!但最好还是切换到SMTP提交端口(587)。 - ghoti
在你指责托管提供商之前,这可能是由于cPanel更改了默认行为导致的。我花了一些时间才找到禁用它的选项,但它在WHM下的SMTP限制中。 - Richard
PHPMailer支持TLS。只需执行以下操作:$host =“tls://smtp.gmail.com”; $port = 587; - Synchro

-1
从我看来,我认为你必须检查一下你是否已经放置了正确的谷歌SMTP(通常是:smtp.gmail.com)? 而且要使用谷歌SMTP,需要进行身份验证,例如使用你的谷歌账户的用户名和密码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接