SMTP connect() failed解決方案

1、首先檢查php是否安裝openssl模塊
<?php
echo !extension_loaded('openssl')?"Not Available":"Available";
2、接下來下載PHPMailer模塊放在Vendor目錄下
3、碼代碼
function send_email($to,$subject='',$content=''){
Vendor('PHPMailer.PHPMailerAutoload');
$mail = new \PHPMailer();
$mail->IsSMTP(); // 啓用SMTP
$mail->Host="smtp.qq.com"; //smtp服務器的名稱(這裏以QQ郵箱爲例)
$mail->SMTPSecure = "ssl"; //目前規定必須使用ssl,非ssl的協議已經不支持了
$mail-> Port = 465; //端口號
//$mail->SMTPDebug = 2; //用於debug PHPMailer信息
$mail->SMTPAuth = true; //啓用smtp認證
$mail->Username = "[email protected]"; //你的郵箱名
$mail->Password = "XXXXXX" ; //郵箱授權碼,注意是授權碼,不是登錄密碼
$mail->From = "[email protected]"; //發件人地址(也就是你的郵箱地址)
$mail->FromName = "馮戰魁"; //發件人姓名
$mail->AddAddress($to); //收件人地址
$mail->WordWrap = 50; //設置每行字符長度
$mail->IsHTML(true); // 是否HTML格式郵件
$mail->CharSet="utf-8"; //設置郵件編碼
$mail->Subject =$subject; //郵件主題
$mail->Body = $content; //郵件內容
if($mail->Send()){
echo "success";
}else{
echo $mail->ErrorInfo;//打印錯誤信息
}
}
4、之所以SMTP connect() failed是因爲之前郵件配置支持非ssl的協議,可以配置25端口,但是不知道從何時開始,大部分郵件配置僅支持ssl協議了,端口號一般是465,這個bug也是我費了好長時間才debug出來,主要歸功於官方提供的$mail->SMTPDebug = 2,這個調試參數,讓我找到了問題所在。
5、以qq郵箱爲例說明
配置郵件服務器和端口號的地址:
http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=369
這個找到之後,最重要的一點是Password這個參數,這個參數之前是賬號的登錄密碼,現在已經改成授權碼了,具體獲取方式:
http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
6、到此結束,就可以愉快的發郵件了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章