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
PHPMailer
PHPMailer 是一個封裝好的 PHP 郵件發送類,支持發送 HTML 內容的電子郵件,以及可以添加附件發送,並不像 PHP 本身 mail() 函數需要服務器環境支持,您只需要設置郵件服務器以相關信息就能實現郵件發送功能。
PHPMailer 項目地址:https://github.com/PHPMailer/PHPMailer
PHP擴展支持
PHPMailer 需要 PHP 的 sockets 擴展支持,而登錄 QQ 郵箱 SMTP 服務器則必須通過 SSL 加密,故 PHP 還得包含 openssl 的支持。
↑ 使用 phpinfo() 函數查看 socket 和 openssl 擴展信息(wamp server 默認啟用了該擴展)。
PHPMailer 核心文件
我們需要下載的phpmailer文件:點擊下載
↑ 在本文中只需要將下載的壓縮包解壓到當前TP5框架下的extend文件夾中
QQ 郵箱中的 設置
選擇賬戶
所有的主流郵箱都支持 SMTP 協議,但並非所有郵箱都默認開啟,您可以在郵箱的設置裏面手動開啟。
第三方服務在提供了賬號和密碼之後就可以登錄 SMTP 服務器,通過它來控制郵件的中轉方式。
開啟 SMTP 服務
↑ 選擇 IMAP/SMTP 服務,點擊開啟服務。
驗證密保
↑ 發送短信“配置郵件客戶端”至1069-0700-69。
獲取授權碼
↑ SMTP 服務器認證密碼,需要妥善保管(PS:密碼直接沒有空格)。
PHP發送郵件
基本代碼
下面的代碼演示了 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);
將上述代碼修改為自己需要的就搞定了!
當你的才華還撐不起你的野心的時候,你就應該靜下心來學習;當你的能力還駕馭不了你的目標時,就應該沈下心來,歷練;夢想,不是浮躁,而是沈澱和積累,只有拼出來的美麗,沒有等出來的輝煌,機會永遠是留給最渴望的那個人,學會與內心深處的你對話,問問自己,想要怎樣的人生,靜心學習,耐心沈澱,送給自己,共勉。
TP5實現郵件發送(PHP 利用QQ郵箱發送郵件「PHPMailer」)