TP5實現郵件傳送(PHP 利用QQ郵箱傳送郵件「PHPMailer」)
在 PHP 應用開發中,往往需要驗證使用者郵箱、傳送訊息通知,而使用 PHP 內建的 mail() 函式,則需要郵件系統的支援。
如果熟悉 IMAP/SMTP 協議,結合 Socket 功能就可以編寫郵件傳送程式了,不過開發這樣一個程式並不容易。
好在 PHPMailer 封裝的足夠強大,使用它可以更加便捷的傳送郵件,免去了我們很多額外的麻煩。
首先,修改php.ini中的一些配置
- extension=php_openssl.dll 前面的分號去掉
- allow_url_fopen = Off 改為 allow_url_fopen = On
1|0PHPMailer
PHPMailer 是一個封裝好的 PHP 郵件傳送類,支援傳送 HTML 內容的電子郵件,以及可以新增附件傳送,並不像 PHP 本身 mail() 函式需要伺服器環境支援,您只需要設定郵件伺服器以相關資訊就能實現郵件傳送功能。
PHPMailer 專案地址:https://github.com/PHPMailer/PHPMailer
1|1PHP擴充套件支援
PHPMailer 需要 PHP 的 sockets 擴充套件支援,而登入 QQ 郵箱 SMTP 伺服器則必須通過 SSL 加密,故 PHP 還得包含 openssl 的支援。
↑ 使用 phpinfo() 函式檢視 socket 和 openssl 擴充套件資訊(wamp server 預設啟用了該擴充套件)。
1|2整理後的PHPMailer 核心檔案
我們需要下載的phpmailer檔案:點選下載
↑ 在本文中只需要將下載的壓縮包解壓到當前TP5框架下的extend資料夾中
2|0QQ 郵箱中的 設定
選擇賬戶
所有的主流郵箱都支援 SMTP 協議,但並非所有郵箱都預設開啟,您可以在郵箱的設定裡面手動開啟。
第三方服務在提供了賬號和密碼之後就可以登入 SMTP 伺服器,通過它來控制郵件的中轉方式。
2|1開啟 SMTP 服務
↑ 選擇 IMAP/SMTP 服務,點選開啟服務。
2|2驗證密保
↑ 傳送簡訊“配置郵件客戶端”至1069-0700-69。
2|3獲取授權碼
↑ SMTP 伺服器認證密碼,需要妥善保管(PS:密碼直接沒有空格)。
3|0PHP傳送郵件
3|1基本程式碼
下面的程式碼演示了 PHPMailer 的使用方法,注意 PHPMailer 例項的配置過程。
Loader::import('phpmailer.phpmailer');//載入extend中的自定義類 $mail = new \PHPMailer\PHPMailer(); //例項化 header("content-type:text/html;charset=utf-8"); // 使用SMTP方式傳送 $mail->IsSMTP(); // 設定郵件的字元編碼 $mail->CharSet='UTF-8'; // 企業郵局域名 $mail->Host = 'smtp.qq.com'; //---------qq郵箱需要的------//設定使用ssl加密方式登入鑑權 $mail->SMTPSecure = 'ssl'; //設定ssl連線smtp伺服器的遠端伺服器埠號 可選465或587 $mail->Port = 465;//---------qq郵箱需要的------ // 啟用SMTP驗證功能 $mail->SMTPAuth = true; //郵件傳送人的使用者名稱(請填寫完整的email地址) $mail->Username = '[email protected]' ; // 郵件傳送人的 密碼 (授權碼) $mail->Password = '修改為自己的授權碼'; //修改為自己的授權碼 //郵件傳送者email地址 $mail->From ="[email protected]"; //傳送郵件人的標題 $mail->FromName ="[email protected]"; //收件人的郵箱 給誰發郵件 $email_addr = "收件人郵箱"; //收件人地址,可以替換成任何想要接收郵件的email信箱,格式是AddAddress("收件人email","收件人姓名") $mail->AddAddress("$email_addr", substr( $email_addr, 0 , strpos($email_addr ,'@'))); //回覆的地址 $mail->AddReplyTo('[email protected]' , "" ); $mail->AddAttachment("./mail.rar"); // 新增附件 //set email format to HTML //是否使用HTML格式 $mail->IsHTML(true); //郵件標題 $mail->Subject = '郵件標題'; //郵件內容 $mail->Body = "<p style='color:red'>" . '郵件內容' . '</p>'; //附加資訊,可以省略 $mail->AltBody = ''; // 新增附件,並指定名稱 $mail->AddAttachment( './error404.php' ,'php檔案'); //設定郵件中的圖片 $mail->AddEmbeddedImage("shuai.jpg", "my-attach", "shuai.jpg"); if( !$mail->Send() ){ $mail_return_arr['mark'] = false ; $str = "郵件傳送失敗. <p>"; $str .= "錯誤原因: " . $mail->ErrorInfo; $mail_return_arr['info'] = $str ; }else{ $mail_return_arr['mark'] = true ; $str = "郵件傳送成功"; $mail_return_arr['info'] = $str ; } echo "<pre>"; print_r( $mail_return_arr);
將上述程式碼修改為自己需要的就搞定了!
當你的才華還撐不起你的野心的時候,你就應該靜下心來學習;當你的能力還駕馭不了你的目標時,就應該沉下心來,歷練;夢想,不是浮躁,而是沉澱和積累,只有拼出來的美麗,沒有等出來的輝煌,機會永遠是留給最渴望的那個人,學會與內心深處的你對話,問問自己,想要怎樣的人生,靜心學習,耐心沉澱,送給自己,共勉。