Gmail smtp无法在phpmailer中运行

时间:2017-12-07 12:53:29

标签: php phpmailer

这是我的代码,

require_once("PHPMailer/class.PHPMailer.php");
$mail = new PHPMailer();
/* receiver details and message - start */
$toid = "example@gmail.com";
$toname = "Example";

$msg = "First name : ".$_POST["fname"] . "<br>";
$msg .= "Last name : ".$_POST["lname"]. "<br>";;
$msg .= "Email : ".$_POST["email"]. "<br>";;
$msg .= "Mobile : ".$_POST["mobile"]. "<br>";;
$msg .= "Message : ".$_POST["msg"];
$subject = "sample subject";
/* receiver details and message - end */

$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1;  // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true;  // authentication enabled
$mail->SMTPKeepAlive = true;  

/* mail smtp configuration - start */
$mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587; 
$mail->Username = 'test@gmail.com';  
$mail->Password = 'xxxxxx';
/* mail smtp configuration - end */

$mail->From = "test@gmail.com";
$mail->FromName = "from name";


$mail->AddAddress($toid, $toname);

$mail->Subject = $subject;
$mail->Body    = $msg;
$mail->IsHTML(true); 
if($mail->Send()){
echo "success";
}else{
echo "Failure";
}

当运行上面的内容时,它会抛出

  

stream_socket_enable_crypto():SSL操作失败,代码为1. OpenSSL错误消息:错误:14090086:SSL例程:ssl3_get_server_certificate:证书验证在第200行的C:\ xampp \ htdocs \ mail \ PHPMailer \ class.smtp.php中失败

2 个答案:

答案 0 :(得分:0)

它与您的代码无关 - 您的OpenSSL CA证书存储区不包含CA证书和/或您的系统正在伪装gmail服务的环境中运行和/或您的时钟是非常错误和/或您正在使用非常旧版本的openSSL。您之前没有告诉我们这个平台,所以我们无法建议如何解决这个问题。

顺便说一句,你还需要启用&#34;不安全&#34;谷歌方面的连接 - 我不认为PHPmailer支持oauth而不是SMTP。

答案 1 :(得分:-1)

对于GMail,请将您的设置更改为:

$mail->SMTPSecure = 'ssl';
$mail->Port = 465;