PHPMailer實現後臺傳送QQ郵件
阿新 • • 發佈:2018-12-16
引言
PHPMailer是PHP的全功能電子郵件建立和傳輸類包,可以支援HTML格式的郵件內容,並且可以允許在沒有本地郵件伺服器的Windows平臺上傳送電子郵件。具體的詳細特點介紹可以看GitHub中的說明文件。
說明
最近在專案IT管理課上的專案中遇到了一個使用者通過電子郵件修改密碼的需求,想著用PHPMailer來實現,這個類包功能強大,很方便,這裡我參照Github中的例項寫了一個測試用的程式,實現了給指定郵箱傳送HTML格式的email,並在其中<a>標籤
中放置自己本機測試專案的地址,通過郵件跳到專案的相關頁面進行操作
前提工作
首先,需要去QQ郵箱開啟IMAP/SMTP服務,這個是免費的。但是不知道是什麼原因,可能不是會員所以還是有一定區別?反正寫好的測試程式碼不穩定,有時候可以連線到SMTP伺服器,有時候就連線不到。不過沒關係,如果只是課上的大作業之類的,多try幾次老師應該也是允許的
如何開啟IMAP/SMTP服務?
1、登陸QQ郵箱,天頭地方設定->賬戶->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務
,點選開啟。提醒一點,開啟之前還是耐心看看QQ郵箱在連結地址給出的幫助文件,很有用;另外,儲存好授權碼,這個在幫助文件中有,仔細看看
2、去GitHub中下載PHPMailer類包,我建議下載5.2-stable的穩定版
3、放到你的專案中去,我是用的ThinkPHP框架,我放到了vendor
中去
示例程式碼
<?php
namespace Home\Controller;
use Think\Controller;
class MailerController extends Controller{
public function sentMailerForResetPwd(){
vendor('PHPMailer.PHPMailerAutoload');
$mail = new \PHPMailer();
$mail->SMTPDebug = 2;
$mail->isSMTP(); //設定mailer使用SMTP協議
$mail->Host = "smtp.qq.com"; //設定接受郵件的SMTP伺服器地址
$mail->SMTPAuth = true; //開啟SMTP認證
$mail->Username = "[email protected]"; // SMTP的使用者名稱
$mail->Password = "***********"; //QQ郵箱的SMTP授權碼
$mail->SMTPSecure = "ssl"; //設定開啟ssl認證
$mail->Port = "465"; //埠號465或者587
$mail->setFrom('[email protected]','lvbingxu');//設定發件人
$mail->addAddress('[email protected]');
// $mail->addAttachment('');//新增附件
// $mail->addReplyTo('[email protected]','info');//增加回復標籤
// $mail->addCC(); //增加一個抄送
// $mail->addBCC(); //增加一個密送
$mail->isHTML(true);
$mail->Subject = "Here is the test PHPmailer";
$mail->Body = "<!DOCTYPE html>
<html>
<head>
<title>test PHPMailer</title>
</head>
<body>
<h1>PHPMailer Test</h1><hr>
<a href='urlxxxxx'>link test</a>
</body>
</html>";
if(!$mail->send()){
echo "Message could not be sent";
echo "Mailer Error : ".$mail->ErrorInfo;
}else{
echo "Message has been sent";
}
}
}
?>
其中一些涉及隱私的地方,我都修改為xxx
,改為自己的認證就好了
效果
點選郵件中的link test
,跳轉到了本地專案的初始頁