搜尋
首頁後端開發php教程PHP透過PHPMailer類別庫實作QQ郵箱傳送方法

  其實PHP郵箱發送功能並非每個項目都一定用得到,但其實每個完整的項目,一般都會包含一個PHP郵箱發送功能。


    一般郵箱發送功能普遍用於註冊激活,密碼找回,以及留言回復等等功能上。而且這也是很多人頭痛的問題,畢竟這個功能並非是幾行程式碼就能實現的,而且也不是你用時間和精力去就能寫出來的。而這個功能其實已經是一個成品,現在需要的是讓我們如何去使用它,那麼下面我們就來講解一下如何利用PHPMailer類別庫實現PHP郵箱發送功能。



  首先,我們來說一下,如何使用自己的網域作為發送郵件的郵件地址的方法如何實現呢?


〜〜〜〜〜) )的,不過該函數要求伺服器支援sendmail或必須設定一台不需要中繼的郵件發送伺服器,但現在要找到一台不需要身份驗證的郵件發送中繼幾乎不可能,所以使用mail函數往往無法成功發送電子郵件。那麼php就無法發送郵件了麼?答案是否定的,自己如果熟悉POP3/SMTP協議,結合socket功能就可以編寫高效穩定的郵件發送程序,但這種變通方法相當於使用php編寫了一個POP3/SMTP客戶端了,對一般的開發者來說尚有難度。


  不過幸好現在的網路資源很是豐富,這時候PHPMailer誕生了。


  PHPMailer有什麼優點?

  可運作在任何平台之上

  支援SMTP驗證

🀎㟎

  支援SMTP驗證🀜抄送、暗送僅win平台下smtp方式支援

  支援多種郵件編碼包括:8bit,base64,binary和quoted-printable

  支援冗餘SMTP伺服器,即可以指定主smtp伺服器位址也只可以指定備份smtp伺服器

  支援帶附件的郵件,可以為郵件添加任意格式的附件---當然得你的伺服器有足夠大的頻寬支撐

  自訂郵件頭訊息,這跟php中透過header函數發送頭資訊類似

  支援將郵件正文製作成HTMl內容,那麼就可以在郵件正文中插入圖片

  靈活的debug支援

  經測試相容的SMTPmail

  如何下載PHPMailer程式碼套件?


  PHPMailer專案位址:https://github.com/PHPMailer/PHPMailer 使用git指令複製到本地,或直接在該專案頁面的右下方點擊「 Download ZIP」即可取得到完整的PHPMailer程式碼包。

  怎樣使用PHPMailer配合qq郵箱下的「網域信箱」使用自己的網域作為郵件信箱位址來寄郵件?


  ====

?下方的「網域名稱信箱」以及PHP環境中使用PHPMailer並配合剛開通的「網域信箱」自動傳送郵件。

  ====

  第一部分:開通qq郵箱下的「網域郵箱」


  〜 〕操作部分。


  進入QQ郵箱,點擊頁面左上方“設定”,再點擊“郵箱設定”下的“帳戶”選項卡,拖曳滾動條,即可看到“域名郵箱”,點擊“管理域名郵箱” 」即可進入網域名稱信箱新增的頁面;或直接點擊http://domain.mail.qq.com/


  點擊「建立網域信箱」,按頁面提示新增自己的網域並驗證。 PS:若您的qq郵箱下成功添加了“域名郵箱”,那麼進入qq郵箱後,頁面左上方“設置”按鈕之後會有“域名郵箱”的文字為該域名郵箱添加自己專屬的郵件地址,點擊審核通過的“域名郵箱”中的“成員管理”,點擊“添加成員”,輸入自己的域名下心儀的郵箱名,然後添加qq號(該qq號即作為該新添加的郵箱的使用者,該qq號需開通qq郵箱且未關閉數字帳號)


  剛剛輸入的那個qq號的qq郵箱會收到一封開通域名郵箱的通知郵件,在郵件中點擊“接受這個郵箱帳號”,利用PHPMailer寄件郵件的寄件者信箱位址即設定完成,為了方便敘述這個郵件地址稱為「寄件者信箱」。


  為了該qq號的登錄密碼安全,請為該qq好設置“獨立密碼”,在qq郵箱“設置”-“帳戶”-“帳戶安全”進行設置,在該處設置的密碼,為了便於本文敘述,稱之為「獨立密碼」。


  至此qq郵箱下的「網域郵箱」開通並新增了待會使用PHPMailer發送作為寄件者的郵箱地址。這裡列出幾個關鍵的待會PHPMailer需要使用的資訊:QQ號,上述第三步驟新增的qq號碼、「獨立密碼」、「寄件者信箱」、寄件者姓名...


  第二部分:使用PHPMailer編寫發送郵箱的代碼


  PHPMailer需PHP的socket擴展支持,而PHPMailerqq郵箱時需要開網加密方式(qq郵箱並不再定義新網域名稱,新網域。允許通過smtp協議的25端口的普通鏈接方式鏈接,只允許ssl的465或587端口[我的一個域名郵箱內測期開通的域名郵箱目前25端口還是可以鏈接的,可能是安全策略,限制了新開域名信箱帳戶的25埠]),固php還得openssl的支持,可以查看phpinfo,以下兩項均存在則可以使用,其中openssl版本號之類不用管;許多虛擬主機中的php是不支援openssl擴展的,那你可能就悲劇了。


  這裡需要注意了,在這之前,我們必須要在php環境下開啟openssl


  這部分僅作代碼示例,代碼中有部分註釋,做磚玉玉玉。


  下載下來的PHPMailer解壓縮後進行瘦身,只需要class.phpmailer.php、class.pop3.php、class.smtp.php以及PHPMailerAutoload.php四個文件,language文件夾要不要,那個可不要,那個可不要主要用於debug調試時的顯示資訊。看下class.phpmailer.php的檔案大小,110kb多,挺嚇人的。

<?php
    //引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告
    require_once("phpmailer/class.phpmailer.php");
 
    //示例化PHPMailer核心类
    $mail = new PHPMailer();
 
    //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
    $mail->SMTPDebug = 1;
 
    //使用smtp鉴权方式发送邮件,当然你可以选择pop方式 sendmail方式等 本文不做详解
    //可以参考http://phpmailer.github.io/PHPMailer/当中的详细介绍
    $mail->isSMTP();
 
    //smtp需要鉴权 这个必须是true
    $mail->SMTPAuth=true;
 
    //链接qq域名邮箱的服务器地址
    $mail->Host = &#39;smtp.qq.com&#39;;
 
    //设置使用ssl加密方式登录鉴权
    $mail->SMTPSecure = &#39;ssl&#39;;
 
    //设置ssl连接smtp服务器的远程服务器端口号 可选465或587
    $mail->Port = 465;
 
    //设置smtp的helo消息头 这个可有可无 内容任意
    $mail->Helo = &#39;Hello smtp.qq.com Server&#39;;
 
    //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名
    $mail->Hostname = &#39;jjonline.cn&#39;;
 
    //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
    $mail->CharSet = &#39;UTF-8&#39;;
 
    //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
    $mail->FromName = &#39;晶晶在线&#39;;
 
    //smtp登录的账号 这里填入字符串格式的qq号即可
    $mail->Username =&#39;888888&#39;;
 
    //smtp登录的密码 这里填入“独立密码” 若为设置“独立密码”则填入登录qq的密码 建议设置“独立密码”
    $mail->Password = &#39;xxxxxxx&#39;;
 
    //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”
    $mail->From = &#39;register@jjonline.cn&#39;;
 
    //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
    $mail->isHTML(true);
 
    //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 
    //这里第二个参数的意义不大
    $mail->addAddress(&#39;xxx@qq.com&#39;,&#39;晶晶在线用户&#39;);
 
    //添加多个收件人 则多次调用方法即可
    $mail->addAddress(&#39;xxx@163.com&#39;,&#39;晶晶在线用户&#39;);
 
    //添加该邮件的主题
    $mail->Subject = &#39;PHPMailer发送邮件的示例&#39;;
 
    //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 
    //如:使用file_get_contents函数读取本地的html文件
 
    $mail->Body = "这是一个PHPMailer发送邮件的一个测试用例";
 
    //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称
    $mail->addAttachment(&#39;./d.jpg&#39;,&#39;mm.jpg&#39;);
 
    //同样该方法可以多次调用 上传多个附件
    $mail->addAttachment(&#39;./Jlib-1.1.0.js&#39;,&#39;Jlib.js&#39;);
 
    //发送命令 返回布尔值
    //PS:经过测试,要是收件人不存在,若不出现错误依然返回true 也就是说在发送之前 自己需要些方法实现检测该邮箱是否真实有效
    $status = $mail->send();
 
    //简单的判断与提示信息
    if($status) {
      echo &#39;发送邮件成功&#39;;
    }else{
      echo &#39;发送邮件失败,错误信息未:&#39;.$mail->ErrorInfo;
    }
?>

特別提示:上述程式碼段僅作參考,若要整合到網站系統中,則可以將程式碼段封裝成函數或類別庫進行呼叫;另外PHPMailer在win32平台下是支援新增副本、暗送的。因為鄙伺服器用的centos,未作測試。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
使用數據庫存儲會話的優點是什麼?使用數據庫存儲會話的優點是什麼?Apr 24, 2025 am 12:16 AM

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

您如何在PHP中實現自定義會話處理?您如何在PHP中實現自定義會話處理?Apr 24, 2025 am 12:16 AM

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

什麼是會話ID?什麼是會話ID?Apr 24, 2025 am 12:13 AM

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

您如何在無狀態環境(例如API)中處理會議?您如何在無狀態環境(例如API)中處理會議?Apr 24, 2025 am 12:12 AM

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

您如何防止與會議有關的跨站點腳本(XSS)攻擊?您如何防止與會議有關的跨站點腳本(XSS)攻擊?Apr 23, 2025 am 12:16 AM

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

您如何優化PHP會話性能?您如何優化PHP會話性能?Apr 23, 2025 am 12:13 AM

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

什麼是session.gc_maxlifetime配置設置?什麼是session.gc_maxlifetime配置設置?Apr 23, 2025 am 12:10 AM

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

您如何在PHP中配置會話名?您如何在PHP中配置會話名?Apr 23, 2025 am 12:08 AM

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。