【问题标题】:PHP Pear Mail SSL Trouble ConnectingPHP Pear Mail SSL 连接问题
【发布时间】:2013-04-02 21:05:07
【问题描述】:

我收到了

Failed to connect to ssl://smtp.gmail.com:587 [SMTP: Failed to connect socket: (code: -1, response: )]

当我尝试发送 SMTP 电子邮件时。我试过 ssl:// 和 tls:// 都没有成功。

我已验证我的计算机可以通过使用配置了 SMTP 帐户的 Outlook 建立这样的传出连接,并且它能够使用 TLS 成功发送。

我还通过 phpinfo() 验证了 Web 服务器上启用了 OpenSSL。它显示 PHP 5.3.15,并且有一个显示 OpenSSL 支持的 openssl 部分:已启用

相关代码:

if($isSSL)
    $host="tls://$host";

$headers = array ('From' => $from,
    'To' => $to,
    'Subject' => $subject);
$opts=array ('host' => $host,
            'debug'=>true,
           'auth' => true,
           'port'=>$port,
           'username' => $username,
           'password' => $password);
$smtp = Mail::factory('smtp',$opts);

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    echo("<p>" . $mail->getMessage() . "</p>");
} 

有什么想法吗?

【问题讨论】:

  • 您是否从您的计算机上尝试了相同的 smtp 帐户?许多家庭 ISP 阻止访问外部邮件服务器作为垃圾邮件预防措施。
  • 是的,我在 Outlook 和 php 中使用了相同的 smtp 用户名和密码。 Outlook 和 php 在我的本地工作站上运行

标签: php email ssl openssl pear


【解决方案1】:

ssl:// 应该可以工作。也请尝试使用 465 端口。

使用$mail-&gt;getUserInfo() 获取更详细的错误消息。

另一个问题来源可能是您的防火墙不允许到该端口的传出连接。

【讨论】:

  • 哇,很奇怪,当我使用 GMail 进行测试时,端口 465 刚刚工作。我修改了我的代码:包含该行,但 $mail->getUserInfo() 返回 NULL。我已经确认我的防火墙没有阻止连接(我可以通过 Outlook 使用端口 587 发送)。感谢您在端口上的指针!
  • 哇,很奇怪。 openssl s_client -connect smtp.gmail.com:587 连接,但不显示任何证书信息,并立即关闭。
猜你喜欢
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 2018-06-04
  • 2012-06-12
  • 2011-04-20
相关资源
最近更新 更多