PHP——使用PHPMailer实现PHP发邮件功能
基本概念
PHPMailer:用于PHP的功能齊全的電子郵件創建和傳輸類。
Socket:Socket是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數據,以符合指定的協議。?
OpenSSL:OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,并提供豐富的應用程序供測試或其它目的使用。?
SMTP(Simple Mail Transfer Protocol):SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。SMTP協議屬于TCP/IP協議簇,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。?
IMAP(Internet Mail Access Protocol):IMAP(Internet Mail Access Protocol,Internet郵件訪問協議)以前稱作交互郵件訪問協議(Interactive Mail Access Protocol)。IMAP是斯坦福大學在1986年開發的一種郵件獲取協議。它的主要作用是郵件客戶端(例如MS Outlook Express)可以通過這種協議從郵件服務器上獲取郵件的信息,下載郵件等。當前的權威定義是RFC3501。IMAP協議運行在TCP/IP協議之上,使用的端口是143。它與POP3協議的主要區別是用戶可以不用把所有的郵件全部下載,可以通過客戶端直接對服務器上的郵件進行操作。?
解決方案
?第一步:下載PHPMailer
打開網址https://github.com/PHPMailer/PHPMailer/ 下載PHPMailer
PHPMailer 需要 PHP 的 sockets 擴展支持,而登錄 QQ 郵箱 SMTP 服務器則必須通過 SSL 加密的, PHP 還得包含 openssl 的支持。
第二步:使用 phpinfo() 函數查看 socket 和 openssl 擴展信息
openssl 如果沒有開啟請打開php.ini文件進行開啟
首先檢查php.ini中
;extension=php_openssl.dll是否存在, 如果存在的話去掉前面的注釋符‘;’, 如果不存在這行,那么添加extension=php_openssl.dll。
PHPMailer 核心文件
第三步:QQ 郵箱設置
所有的主流郵箱都支持 SMTP 協議,但并非所有郵箱都默認開啟,您可以在郵箱的設置里面手動開啟。
第三方服務在提供了賬號和密碼之后就可以登錄 SMTP 服務器,通過它來控制郵件的中轉方式。
第四步:開啟 SMTP 服務
選擇 IMAP/SMTP 服務,點擊開啟服務
驗證密保
發送短信“配置郵件客戶端”至1069-0700-69
獲取授權碼
SMTP 服務器認證密碼,需要妥善保管(PS:密碼直接沒有空格)
第五步:PHP發送郵件
下面的代碼演示了 PHPMailer 的使用方法,注意 PHPMailer 實例的配置過程。
<?php // Import PHPMailer classes into the global namespace // These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; // 引入PHPMailer的核心文件 require_once("./php/PHPMailer/src/PHPMailer.php"); require_once("./php/PHPMailer/src/SMTP.php");// 實例化PHPMailer核心類 $mail = new PHPMailer(); // 是否啟用smtp的debug進行調試 開發環境建議開啟 生產環境注釋掉即可 默認關閉debug調試模式 $mail->SMTPDebug = 1; // 使用smtp鑒權方式發送郵件 $mail->isSMTP(); // smtp需要鑒權 這個必須是true $mail->SMTPAuth = true; // 鏈接qq域名郵箱的服務器地址 $mail->Host = 'smtp.qq.com'; // 設置使用ssl加密方式登錄鑒權 $mail->SMTPSecure = 'ssl'; // 設置ssl連接smtp服務器的遠程服務器端口號 $mail->Port = 465; // 設置發送的郵件的編碼 $mail->CharSet = 'UTF-8'; // 設置發件人昵稱 顯示在收件人郵件的發件人郵箱地址前的發件人姓名 $mail->FromName = '發件人昵稱'; // smtp登錄的賬號 QQ郵箱即可 $mail->Username = '12345678@qq.com'; // smtp登錄的密碼 使用生成的授權碼 $mail->Password = '**********'; // 設置發件人郵箱地址 同登錄賬號 $mail->From = '12345678@qq.com'; // 郵件正文是否為html編碼 注意此處是一個方法 $mail->isHTML(true); // 設置收件人郵箱地址 $mail->addAddress('87654321@qq.com'); // 添加多個收件人 則多次調用方法即可 $mail->addAddress('87654321@163.com'); // 添加該郵件的主題 $mail->Subject = '郵件主題'; // 添加郵件正文 $mail->Body = '<h1>Hello World</h1>'; // 為該郵件添加附件 $mail->addAttachment('./example.pdf'); // 發送郵件 返回狀態 $status = $mail->send(); ?>資源下載
PHPMailer Github:?https://github.com/PHPMailer/PHPMailer/
參考文章
https://www.cnblogs.com/songbo236589/p/8184039.html
https://segmentfault.com/a/1190000014789528?utm_source=tag-newest
https://baijiahao.baidu.com/s?id=1635425119804881037&wfr=spider&for=pc
https://blog.csdn.net/zhsp1029/article/details/2206483
總結
以上是生活随笔為你收集整理的PHP——使用PHPMailer实现PHP发邮件功能的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 设计模式(Design Pattern)
- 下一篇: PHP——获取路径和目录
