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

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

在 PHP 應用開發中,往往需要驗證使用者郵箱、傳送訊息通知,而使用 PHP 內建的 mail() 函式,則需要郵件系統的支援。

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

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


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

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

  

將上述程式碼修改為自己需要的就搞定了!

當你的才華還撐不起你的野心的時候,你就應該靜下心來學習;當你的能力還駕馭不了你的目標時,就應該沉下心來,歷練;夢想,不是浮躁,而是沉澱和積累,只有拼出來的美麗,沒有等出來的輝煌,機會永遠是留給最渴望的那個人,學會與內心深處的你對話,問問自己,想要怎樣的人生,靜心學習,耐心沉澱,送給自己,共勉。