我正在建立一个网站,其中一部分需要发送电子邮件(一个用于帐户密码重置链接,另一个用于一般用户管理员联系)。我一直在使用 PearMailer 通过 GMail 帐户发送电子邮件,而且效果很好……直到现在。出于某种原因,它停止发送电子邮件,它给了我这个非常无益的错误:
[message] => Failed to connect to ssl://smtp.gmail.com:465 [SMTP: Failed to connect socket: fsockopen(): unable to connect to ssl://smtp.gmail.com:465 (Unknown error) (code: -1, response: )
openSSL 已启用,并且我使用的所有凭据都是正确的(我可以使用它们手动登录该 GMail 帐户)。
这是我正在使用的代码,其中 $config 保存帐户凭据,而 $_POST 数据来自“联系我们”表单(在我开发时忽略它缺乏清理):
require_once "Mail.php";
$params=array(
"host"=>"ssl://smtp.gmail.com",
"port"=>465,
"auth"=>true,
"username"=>$config["mailFrom"],
"password"=>$config["mailPass"]
);
$headers=array(
"To"=>$config["mailFrom"],
"From"=>$_POST['user']." <".$_POST["reply-to"].">",
"Content-type"=>"text/html",
"Subject"=>$_POST['subject']
);
$mail=Mail::factory("smtp", $params);
$sent=$mail->send($config["mailFrom"], $headers, htmlentities($_POST['body']));
它应该向我的 GMail 帐户发送一封来自它自己的电子邮件,但它却给了我上面提到的错误。更改往返地址后,无论如何,它仍然给我那个错误。这特别奇怪,因为我一直在使用几乎相同的代码来发送密码重置链接,并且直到现在都可以正常工作;当然,它现在也无法连接。
我找不到任何说 Google 已更改其设置的信息,而且我绝对没有超过 smtp.gmail.com 应该允许的每天 2,000 条消息的限制,所以这里发生了什么?