1. 程式人生 > >PHP通過PHPMailer類庫實現QQ郵箱傳送方法

PHP通過PHPMailer類庫實現QQ郵箱傳送方法

其實PHP郵箱傳送功能並非每個專案都一定用得到,但其實每個完整的專案,一般都會包含一個PHP郵箱傳送功能。 一般郵箱傳送功能普遍用於註冊啟用,密碼找回,以及留言回覆等等功能上。而且這也是很多人頭疼的問題,畢竟這個功能並非是幾行程式碼就能實現的,而且也不是你用時間和精力去就能寫出來的。而這個功能其實已經是一個成品,現在需要的是讓我們如何去使用它,那麼下面我們就來講解一下如何利用PHPMailer類庫實現PHP郵箱傳送功能。  首先,我們來說一下,如何使用自己的域名作為傳送郵件的郵件地址的方法如何實現呢?  PHP環境下,是提供了傳送郵件的函式mail()的,不過該函式要求伺服器支援sendmail或者必須設定一臺不需要中繼的郵件傳送伺服器,但現在要找到一臺不需要身份驗證的郵件傳送中繼幾乎不可能,所以使用mail函式往往無法成功傳送電子郵件。那麼php就無法傳送郵件了麼?答案是否定的,自己如果熟悉POP3/SMTP協議,結合socket功能就可以編寫高效穩定的郵件傳送程式,但這種變通方法相當於使用php編寫了一個POP3/SMTP客戶端了,對一般的開發者來說尚有難度。  不過幸好現在的網際網路資源很是豐富,這時候PHPMailer誕生了。  PHPMailer有什麼優點?  可執行在任何平臺之上  支援SMTP驗證  傳送郵時指定多個收件人,抄送地址,暗送地址和回覆地址;注:新增抄送、暗送僅win平臺下smtp方式支援  支援多種郵件編碼包括:8bit,base64,binary和quoted-printable  支援冗餘SMTP伺服器,即可以指定主smtp伺服器地址也只可以指定備份smtp伺服器  支援帶附件的郵件,可以為郵件新增任意格式的附件---當然得你的伺服器有足夠大的頻寬支撐  自定義郵件頭資訊,這跟php中通過header函式傳送頭資訊類似  支援將郵件正文製作成HTMl內容,那麼就可以在郵件正文中插入圖片  靈活的debug支援  經測試相容的SMTP伺服器包括:Sendmail,qmail,Postfix,Imail,Exchange等  如何下載PHPMailer程式碼包?  PHPMailer專案地址:https://github.com/PHPMailer/PHPMailer 使用git命令克隆到本地,或直接在該專案頁面的右下方點選“ Download ZIP ”即可獲取到完整的PHPMailer程式碼包。  怎樣使用PHPMailer配合qq郵箱下的“域名郵箱”使用自己的域名作為郵箱地址來發送郵件?  ====  以下分兩部分,講解使用自己的域名免費開通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擴充套件支援,而PHPMailer連結qq域名郵箱時需要ssl加密方式(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 = 'smtp.qq.com'; //設定使用ssl加密方式登入鑑權 $mail->SMTPSecure = 'ssl'; //設定ssl連線smtp伺服器的遠端伺服器埠號 可選465或587 $mail->Port = 465; //設定smtp的helo訊息頭 這個可有可無 內容任意 $mail->Helo = 'Hello smtp.qq.com Server'; //設定發件人的主機域 可有可無 預設為localhost 內容任意,建議使用你的域名 $mail->Hostname = 'jjonline.cn'; //設定傳送的郵件的編碼 可選GB2312 我喜歡utf-8 據說utf8在某些客戶端收信下會亂碼 $mail->CharSet = 'UTF-8'; //設定發件人姓名(暱稱) 任意內容,顯示在收件人郵件的發件人郵箱地址前的發件人姓名 $mail->FromName = '晶晶線上'; //smtp登入的賬號 這裡填入字串格式的qq號即可 $mail->Username ='888888'; //smtp登入的密碼 這裡填入“獨立密碼” 若為設定“獨立密碼”則填入登入qq的密碼 建議設定“獨立密碼” $mail->Password = 'xxxxxxx'; //設定發件人郵箱地址 這裡填入上述提到的“發件人郵箱” $mail->From = '[email protected]'; //郵件正文是否為html編碼 注意此處是一個方法 不再是屬性 true或false $mail->isHTML(true); //設定收件人郵箱地址 該方法有兩個引數 第一個引數為收件人郵箱地址 第二引數為給該地址設定的暱稱 不同的郵箱系統會自動進行處理變動 //這裡第二個引數的意義不大 $mail->addAddress('[email protected]','晶晶線上使用者'); //新增多個收件人 則多次呼叫方法即可 $mail->addAddress('[email protected]','晶晶線上使用者'); //新增該郵件的主題 $mail->Subject = 'PHPMailer傳送郵件的示例'; //新增郵件正文 上方將isHTML設定成了true,則可以是完整的html字串 //如:使用file_get_contents函式讀取本地的html檔案 $mail->Body = "這是一個PHPMailer傳送郵件的一個測試用例"; //為該郵件新增附件 該方法也有兩個引數 第一個引數為附件存放的目錄(相對目錄、或絕對目錄均可) 第二引數為在郵件附件中該附件的名稱 $mail->addAttachment('./d.jpg','mm.jpg'); //同樣該方法可以多次呼叫 上傳多個附件 $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js'); //傳送命令 返回布林值 //PS:經過測試,要是收件人不存在,若不出現錯誤依然返回true 也就是說在傳送之前 自己需要些方法實現檢測該郵箱是否真實有效 $status = $mail->send(); //簡單的判斷與提示資訊 if($status) {   echo '傳送郵件成功'; }else{   echo '傳送郵件失敗,錯誤資訊未:'.$mail->ErrorInfo; }?>特別提示:上述程式碼段僅作參考,若要整合到網站系統中,則可以將程式碼段封裝成函式或類庫進行呼叫;另外PHPMailer在win32平臺下是支援新增抄送、暗送的。因為鄙人伺服器用的centos,未作測試。再次提示:以上文章和程式碼都是我在網上摘抄整理的,並非本人完全編寫。

相關推薦

PHP通過PHPMailer實現QQ郵箱傳送方法

其實PHP郵箱傳送功能並非每個專案都一定用得到,但其實每個完整的專案,一般都會包含一個PHP郵箱傳送功能。 一般郵箱傳送功能普遍用於註冊啟用,密碼找回,以及留言回覆等等功能上。而且這也是很多人頭疼的問

flask_email實現QQ郵箱傳送郵件

直接上程式碼 from flask import Flask from flask_mail import Mail, Message from threading import Thread #

java實現qq郵箱傳送註冊驗證碼

import javax.mail.*; import javax.mail.internet.MimeMessage;/** * * @param email 傳送郵箱驗證碼(註冊) * @return 驗證碼給前段 */ @RequestMapping(valu

通過 SignalR 實現 ASP.NET MVC 的實時通訊

在本文中,您將學到在現有 ASP.NET MVC 框架的 CRUD 專案中,如何使用 SignalR 類庫,顯示來自資料庫的實時更新。在這一主題中,我們將重點放在在現有 ASP.NET MVC 框架的 CRUD 專案中,如何使用 SignalR 類庫,顯示來自資

java實現通過QQ郵箱傳送啟用郵件 springBoot

使用者郵件啟用 通過QQ郵箱傳送啟用郵件 soringBoot 本文主要介紹了使用java 呼叫郵箱傳送郵件的功能 首先新建一個springboot專案  pom依賴如下 <parent> <groupId>org.springframewor

php解析htmlsimple_html_dom

響應 過多 echo 記得 正則 下載 int curl sse 下載地址:https://github.com/samacs/simple_html_dom解析器不僅僅只是幫助我們驗證html文檔;更能解析不符合W3C標準的html文檔。它使用了類似jQuery的元素選擇

Java通過匿名實現回調函數

err sys 強制 代碼 表達式 形參 入參 對象 std 在C語言中,函數名可以當做函數指針傳遞給形參從而實現回調 void f1() { printf("f1()\n"); } void f2() { printf("f2()\n"); } void f3() {

PHP通過exec函數實現對APK自動簽名

php android apk簽名 公司開發的Android應用,因為在不同平臺下簽名文件不一樣,需要分別進行簽名,這個很麻煩,於是要求在公司的後臺管理系統中能夠對上傳的APK文件,自動使用不同平臺的簽名文件完成簽名,這樣只需要上傳一次文件就得到所有平臺簽名後的APK了,分發起來方便不少。 具

java如何實現QQ郵箱驗證

這裡後臺用的是spring boot。        實現QQ郵箱驗證首頁新增依賴:          <dependency>       

應用behave行為驅動框架實現QQ郵箱的登入

為了更好地定位元素,首先要仔細分析某個系統登入時,他的登入頁面到底有幾個iframe元素,當有多個時,切登入框的iframe是獨立的話,需要先把frame切換到登入的iframe上,這樣才能對其上面的元素進行一系列操作!! 如圖所示是QQ郵箱的登入頁面 分析HTML對應的dom樹結構是什麼樣的,是否此

C++通過jsoncpp讀寫JSON檔案-json用法詳解

介紹: JSON 是常用的資料的一種格式,各個語言或多或少都會用的JSON格式。 JSON是一個輕量級的資料定義格式,比起XML易學易用,而擴充套件功能不比XML差多少,用之進行資料交換是一個很好的選擇。JSON的全稱為:JavaScript Object Notation ,顧名思義,JSON是用於標記

C++通過jsoncpp讀寫JSON文件-json用法詳解

null 鏈接 reading port 舉例 格式 www. json格式 eno 介紹: JSON 是常用的數據的一種格式,各個語言或多或少都會用的JSON格式。 JSON是一個輕量級的數據定義格式,比起XML易學易用,而擴展功能不比XML差多少,用之進行數據交換是一個

基於php的mongodb

第一次使用mongo的時候給我的感覺就是文件物件處理起來麻煩,查詢語法拼接不夠平滑好記,因為處理慣了陣列,所以這裡基於嘗試著以tp的方式封裝了一個類庫,方便使用 呼叫方式都在最下面已經註釋掉的部分,快來試試吧 <?php  /**  * mongodb驅動類 &

使用Live555實現的網路直播系統

                Live555主要有四個類庫:libUsageEnvironment.lib;libliveMedia.lib;libgroupsock.lib;libBasicUsageEnvironment.lib將這四個類庫以及相關的標頭檔案匯入VC++2010之後,可以輕鬆實現網路直播

使用FFmpeg實現YUV視訊序列編碼為視訊

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                搞視訊處理的朋友肯定比較熟悉YUV視訊序列,很多測試庫提供的視訊資料都是YUV視訊序列,我們這裡就用用YUV視訊序列來做視訊。關於YUV視訊序列,我就不多講了,

使用live555實現的網路直播系統——直播H264檔案

    下載live555最新程式碼,編譯生成live555 的庫檔案:libBasicUsageEnvironment.a  libgroupsock.a  libliveMedia.a  libUsageEnvironment.a ,使用這4個庫再加上live555 自帶

java Web中實現QQ郵箱驗證以及驗證碼註冊使用者

實體類:User.java package com.yinhe.bean; import java.util.Date; public class User { private String uid; private String username; private Str

呼叫CodeSmith實現程式碼生成(含原始碼)

      CodeSmith的作用是不言而喻的,用過的人都會覺得它非常強大.根據自定義模板,快速生成程式碼.只是我們使用的時候,要在它提供的CodeSmith Studio環境下使用模板,再傳入相應引數,最終生成NET的類檔案.       如果我們可以通過編碼方式,

PHP通過apache的mod_rewrite實現偽靜態

1、首先開啟apache裡的mod_rewrite模組  去掉 LoadModule rewrite_module modules/mod_rewrite.so 這一行前面的 “#” 2、在專案的根目錄下新建.htaccess檔案,用notepad++ 或者其它編輯器開

Android上拉載入下拉重新整理(使用第三方實現的)

package com.example.android_pullxml; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONEx