【问题标题】:PHPMailer with GMail: SMTP Error带有 GMail 的 PHPMailer:SMTP 错误
【发布时间】:2011-02-21 11:03:15
【问题描述】:

我正在使用 PHPMailer 通过 GMail 发送邮件。我使用的代码直接来自教程,它可以在我的笔记本电脑上完美运行。但是,在 Windows 2003 Server 上对此进行测试 - 它似乎总是返回一个 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会发生什么?
  • 在我的笔记本电脑和服务器上,我都可以使用 telnet,即我没有收到任何错误,命令窗口标题更改为 Telnet smpt.gmail.com,它正在等待更多命令。输入bye 允许我退出。这告诉你什么,因为我不知道?!这是否意味着这不是端口/防火墙问题?
  • 我还需要$mail->Username = "myUsername"; // SMTP username 和$mail->Password = "myPassword"; // SMTP password 才能成功发送邮件。

标签: php smtp phpmailer


【解决方案1】:

第一件事要注意:Gmail 使用 TLS。不知道用 SSL 代替 TLS 是否会有很大的不同,但 SSL 是 TLS 的前身。

我还建议检查一下,它的 phpmailer 是为使用 gmail 而定制的。 PHPGMailer

【讨论】:

  • 感谢您要求查看 SSL 的内容。即使这不是问题,我发现问题出在 fsockopen 上——它需要服务器上未启用的 openssl 扩展! :)
  • 啊酷,我会这么说,但我记得没有启用它的错误看起来有点不同。
【解决方案2】:

要将 PHPMailer 与 gmail 一起使用,请不要使用 SSL/465(自 1998 年以来已弃用),按照 Noctrine 的建议使用 TLS/587,方法如下:

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

你应该会发现它有效。

【讨论】:

    猜你喜欢
    • 2013-12-31
    • 2020-08-24
    • 1970-01-01
    • 2022-10-08
    • 2011-03-29
    • 1970-01-01
    • 2014-10-14
    • 2014-08-12
    • 2016-10-20
    相关资源
    最近更新 更多