公司的項目使用谷歌郵箱,用戶注冊成功后,會發送一封郵件到用戶注冊的郵箱。但是我注冊一個號卻並沒有收到郵件,於是我在代碼里var_dump打印結果,發現有錯誤提示:SMTP connect() failed.
查閱大量資料,發現很多人都遇到過這個問題,最后終於找到解決方法。
解決方法:
在發送郵件代碼里面增加一行:
$mail->SMTPSecure = 'ssl';
或者:
$mail->SMTPOptions = array('ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
));
將上面代碼放進去。
下面是谷歌郵件全部代碼
include_once "class.phpmailer.php";
include_once "class.smtp.php";
//獲取一個外部文件的內容
$mail=new PHPMailer();
$body="測試內容";
//設置smtp參數
$mail->IsSMTP();
$mail->SMTPAuth=true;
$mail->SMTPKeepAlive=true;
$mail->SMTPSecure= "ssl";
$mail->Host="smtp.gmail.com";
$mail->Port=465;
//填寫你的email賬號和密碼
$mail->Username="發件人谷歌郵箱賬號@gmail.com";
//這里大家需要填寫谷歌郵箱的登錄密碼,qq和網易是授權碼,谷歌不一樣直接是登錄密碼
$mail->Password="發件人郵箱密碼";
//設置郵件頭from字段
$mail->From="發件人谷歌郵箱賬號@gmail.com";
//設置發件人名字
$mail->FromName="test";
$mail->Subject="郵件標題";
//郵件內容
$mail->AltBody=$body;
$mail->WordWrap=50; // set word wrap
$mail->MsgHTML($body);
//設置回復地址
$mail->AddReplyTo("發件人谷歌郵箱地址","test");
//添加附件,此處附件與腳本位於相同目錄下否則填寫完整路徑
//附件的話我就注釋掉了
//$mail->AddAttachment("accessory.jpg");
//$mail->AddAttachment("accessory.zip");
//設置郵件接收方的郵箱和姓名
$mail->AddAddress("收件人郵箱地址","hello");
//使用HTML格式發送郵件
$mail->IsHTML(true);
//通過Send方法發送郵件
//根據發送結果做相應處理
if(!$mail->Send()){
echo "Mailer Error:".$mail->ErrorInfo;
}else{
echo "Message has been sent";
}