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

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 = '123456789@qq.com' ;
// 郵件發送人的 密碼 (授權碼)
$mail->Password = '修改為自己的授權碼';  //修改為自己的授權碼
//郵件發送者email地址
$mail->From ="123456789@qq.com";
//發送郵件人的標題
$mail->FromName ="123456789@qq.com";
//收件人的郵箱 給誰發郵件
$email_addr = "收件人郵箱";
//收件人地址,可以替換成任何想要接收郵件的email信箱,格式是AddAddress("收件人email","收件人姓名")
$mail->AddAddress("$email_addr", substr(  $email_addr, 0 , strpos($email_addr ,'@')));
//回復的地址
$mail->AddReplyTo('123456789@qq.com' , "" );
$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);

 

 

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

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM