1. 程式人生 > >TP5實現郵件發送(PHP 利用QQ郵箱發送郵件「PHPMailer」)

TP5實現郵件發送(PHP 利用QQ郵箱發送郵件「PHPMailer」)

技術 email 支持 人生 inf log bubuko use 姓名

在 PHP 應用開發中,往往需要驗證用戶郵箱、發送消息通知,而使用 PHP 內置的 mail() 函數,則需要郵件系統的支持。

如果熟悉 IMAP/SMTP 協議,結合 Socket 功能就可以編寫郵件發送程序了,不過開發這樣一個程序並不容易。

好在 PHPMailer 封裝的足夠強大,使用它可以更加便捷的發送郵件,免去了我們很多額外的麻煩。 

首先,修改php.ini中的一些配置

  1. extension=php_openssl.dll 前面的分號去掉,
  2. 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」)