PHPMailer与GMail:SMTP错误

4
我正在使用PHPMailer通过GMail发送邮件。 我使用的代码直接来自教程,它在我的笔记本电脑上完美地工作。 但是,在Windows 2003服务器上测试此代码时,似乎总是返回SMPT错误:
SMTP错误:无法连接到SMTP主机。 邮件程序错误:SMTP错误:无法连接到SMTP主机。
以下是我在PHPMailer中使用的设置:
include("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // use ssl
$mail->Host = "smtp.gmail.com"; // GMAIL's SMTP server
$mail->Port = 465; // SMTP port used by GMAIL server

我可以自信地说这不是端口问题,因为我正在连接另一个使用465端口发送邮件的服务器。如果不是这样,请解释一下。

我该如何解决这个问题?

感谢所有提供帮助的人。


当您在命令行上运行“telnet smtp.gmail.com 465”时会发生什么? - webbiedave
在我的笔记本电脑和服务器上,我能够使用telnet,即我没有收到任何错误消息,命令窗口标题更改为“Telnet smpt.gmail.com”,并且正在等待更多命令。输入“bye”允许我退出。这对你意味着什么,因为我不知道?!这是否意味着它不是端口/防火墙问题? - Abs
我还需要 $mail->Username = "myUsername"; // SMTP用户名$mail->Password = "myPassword"; // SMTP密码 才能成功发送邮件。 - D.Tate
2个回答

4

首先需要注意的是:Gmail使用TLS。不确定是否使用SSL而不是TLS会有多大的区别,但是SSL是TLS的前身。

我建议还要查看其专门用于使用Gmail的定制phpmailer。PHPGMailer


1
感谢您要查看SSL问题。尽管它不是问题的原因,但我发现问题出在fsockopen上 - 它需要openssl扩展,而服务器上未启用该扩展!! :) - Abs
啊,很酷,我本来也想这么说,但是我记得没有启用它时的错误看起来有点不同。 - Jesse Dorsey
还有,请查看以下内容:https://dev59.com/RZbfa4cB1Zd3GeqPy9Hq - Pedro Araujo Jorge

2

想要使用PHPMailer与gmail配合,不要使用SSL/465(它自1998年以来就已经被弃用),而是使用TLS/587,正如Noctrine所建议的那样。以下是如何操作:

include 'phpmailer/class.phpmailer.php';
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "tls://smtp.gmail.com"; // GMAIL's SMTP server
$mail->Port = 587; // SMTP port used by GMAIL server
...

你应该会发现这有效。

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