【发布时间】:2019-05-08 02:56:27
【问题描述】:
我编写了一个函数来为我正在开发的一个爱好应用程序发送一封确认电子邮件。我以为我已正确设置了所有内容,但是在调用该函数时出现以下错误:
2019-05-08 02:43:30 Connection failed. Error #2: failed loading cafile stream: `C:\xampp\apache\bin\curl-ca-bundle.crt' [C:\Users\Michael\Desktop\InviteMe Application\vendor\phpmailer\src\SMTP.php line 405]
SMTP Error: Could not connect to SMTP host.
我已经设置了我的 gmail 帐户以允许不太安全的应用访问该帐户,并且我已经生成了一个密码。
我已尝试阅读我正在使用的库的故障排除文档,但未能找到解决我遇到的特定问题的任何内容。
这里是电子邮件功能:
function send_confirmation_email($name, $email, $user_id) {
$confirmationUrl = generate_confirmation_url($user_id);
$body = "";
$body .= "<html><body>";
$body .="<h1>Confirm your account</h1>";
$body .= "<p>Follow the link below to confirm your account:</p>";
$body .= "<a href='" . $confirmationUrl . "'>confirm account</a>";
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 3; //debugging purposes
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "invitemedemo@gmail.com";
$mail->Password = "password";
$mail->setFrom('invitemedemo@gmail.com', "InviteMe");
$mail->addAddress($email, $name);
$mail->Subject = "Confirm Account";
$mail->Body = $body;
$mail->isHTML(true);
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
return false;
} else {
return true;
}
}
我看到的是上面粘贴的错误,而不是发送的电子邮件。
【问题讨论】:
-
我知道脚本无法连接到 SMTP 服务器。我就是不明白为什么。
-
CA 证书 (
C:\xampp\apache\bin\curl-ca-bundle.crt) 是否存在?有效吗? -
如果您在本地,phpmailer 类可能无法正常工作,因此请在主机上对其进行测试,如果它在那里,请联系您的托管服务提供商...
-
@Raptor 所说的内容,并阅读 PHPMailer 故障排除指南对 CA 证书包的说明。
-
CA 证书应该是有效的。我直接从 repo 下载了文件。我有一种感觉,这可能都是因为我创建了一个新的作用域,而新函数作用域内的方法无法访问它之外的属性。