国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

phplist及phpmailer(組合使用)通過gmail發(fā)送郵件的配置方法

2024-05-04 23:44:43
字體:
供稿:網(wǎng)友
這篇文章主要介紹了phplist及phpmailer通過gmail發(fā)送郵件的配置方法,分析了組合使用二者過程中的相關(guān)問題與注意事項,需要的朋友可以參考下
 

本文實例講述了phplist及phpmailer通過gmail發(fā)送郵件的配置方法。分享給大家供大家參考,具體如下:

一般來說,只要你使用的不是gmail郵箱,那么利用phplist發(fā)送郵件只要按照前面《PHP的郵件群發(fā)系統(tǒng)phplist配置方法詳細(xì)總結(jié)》配置就夠了。但若你如同我一樣不幸,必須使用gmail這種有ssl驗證的郵箱,那么恭喜你,我的不幸現(xiàn)在已然成為你的幸運,經(jīng)過數(shù)天的嘗試,我終于成功將gmail與phplist組合在了一起?,F(xiàn)將經(jīng)驗分享于此,希望對各位同我一般境遇的同志有用。另外,phplist的核心是phpmailer,我提出的解決方案也主要是圍繞phpmailer的,所以需要使用phpmailer通過gmail發(fā)送郵件而不能成功者也可以參考我的方法。

首先按照《PHP的郵件群發(fā)系統(tǒng)phplist配置方法詳細(xì)總結(jié)》中的配置方法通過gmail發(fā)送郵件,在發(fā)送測試郵件時phplist會報告發(fā)送郵件失敗,在事件日志(eventlog)里會有錯誤提示“Mailer Error: The following From address failed:...”,說是發(fā)件人地址存在問題。難道是已經(jīng)連上smtp服務(wù)器,但是發(fā)送郵件過程中存在問題嗎?可以用一個方法試驗一下到底連沒連上smtp服務(wù)器:我把config.php文件中的郵箱帳戶密碼故意填錯,結(jié)果發(fā)送測試郵件時仍然報同樣的錯誤,看來是根本就沒連上smtp服務(wù)器,這phplist的錯誤報告也太……

知道是沒連上smtp服務(wù)器那就說明問題出現(xiàn)在phplist發(fā)送郵件的核心——另一款著名開源軟件phpmailer。

上網(wǎng)查了一下phpmailer發(fā)送gmail郵件的資料,發(fā)現(xiàn)人們說舊版本的phpmailer不支持ssl驗證,不能連接gmail的smtp服務(wù)器,而此問題已在新版的phpmailer中解決了。

打開lists/admin/phpmailer/ChangeLog.txt,發(fā)現(xiàn)最新版的phplist自帶的phpmailer的版本是1.73,是2005年出的,確實不算新。于是上phpmailer的官網(wǎng)下了個最新的5.1的。

我想先研究一下新版的phpmailer是如何解決ssl驗證的問題的,于是看了一下其自帶的一些說明文檔,碰巧發(fā)現(xiàn)在PHPMailer_v5.1/docs下有一個use_gmail.txt,看來是官方比較重視gmail問題,專門出了一個demo供人參考。打開一看也確實是一個完整的php頁面文件,基本上修改了文件擴展名、郵箱用戶名和密碼就能使用,但如果僅僅如此修改,在訪問該測試頁面時會報錯,也不知官方出的demo怎么會有這樣的錯誤,居然會調(diào)用一個未定義的函數(shù),而且有一些沒有必要的成分。我們只不過想先測試一下能否正常發(fā)送郵件,所以我將其修改為:

<?php    // example on using PHPMailer with GMAIL    include("class.phpmailer.php");    include("class.smtp.php"); // note, this is optional - gets called from main class if not already loaded    $mail       = new PHPMailer();    $body       = "test";    $mail->IsSMTP();    $mail->SMTPAuth  = true;         // enable SMTP authentication    $mail->SMTPSecure = "ssl";         // sets the prefix to the servier    $mail->Host    = "smtp.gmail.com";   // sets GMAIL as the SMTP server    $mail->Port    = 465;          // set the SMTP port    $mail->Username  = "myname@gmail.com"; // GMAIL username    $mail->Password  = "mypassword";      // GMAIL password    $mail->From    = "myname@gmail.com";    $mail->FromName  = "Webmaster";    $mail->Subject  = "This is the subject";    $mail->AltBody  = "This is the body when user views in plain text format"; //Text Body    $mail->WordWrap  = 50; // set word wrap    $mail->MsgHTML($body);    $mail->AddReplyTo("myname@gmail.com","Webmaster");    $mail->AddAddress("myname@gmail.com","First Last");    $mail->IsHTML(true); // send as HTML    if(!$mail->Send()) {     echo "Mailer Error: " . $mail->ErrorInfo;    } else {     echo "Message has been sent";    }?>

結(jié)果發(fā)現(xiàn)訪問此頁面時仍然報錯,真是令人無奈,官方給的demo怎么會無法運行?

這時我忽然想起PHPMailer_v5.1/docs下有一個名為Note_for_SMTP_debugging.txt的文件,現(xiàn)在我不正是在為連不上smtp服務(wù)器而煩惱嗎,不妨看一下里面提供的調(diào)試方法。

打開文件看完第一行就眼前一亮,這正是我所需要的!其實使用方法也很簡單,只要在

$mail->IsSMTP();

前插入

$mail->SMTPDebug = 1;

便可在報錯同時得到更見詳細(xì)的錯誤信息。真是好東西^_^

按照這樣修改完后,我在訪問頁面時得到了更加詳細(xì)的說明——“SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (28593608)”。

原來如此,于是我打開了我的php配置文件(C://Windows/php.ini)搜索ssl,果然搜到一個關(guān)于ssl的擴展

;extension=php_openssl.dll

它沒有被打開。去掉其前面用于注釋的“;”,然后重啟服務(wù)器,再次訪問測試頁面use_gmail.php,仍然是同樣的錯誤提示。

沒辦法了,我上網(wǎng)查了一下關(guān)于php以及apache的ssl配置的文章,發(fā)現(xiàn)僅僅是將ssl擴展模塊開啟是不夠的,還要對openssl進行配置,在Windows環(huán)境下配置方法倒是很簡單——找到php安裝目錄下的ssleay32.dll和libeay32.dll,將這二者復(fù)制到windows下的system32目錄中即可(在php.ini中開啟extension=php_openssl.dll還是必要的)。當(dāng)然,不想“污染”system32目錄的同志們可以用修改環(huán)境變量的方法,只要讓ssleay32.dll和libeay32.dll在系統(tǒng)路徑下就可以了。(如果你使用的不是winidows操作系統(tǒng),請上網(wǎng)查找針對你的操作系統(tǒng)的配置ssl的方法,應(yīng)該不難找到)

這回再訪問use_gmail.php發(fā)現(xiàn)可以成功發(fā)送了!

在此基礎(chǔ)上,我們的phplist的問題也可以解決了:用新版phpmailer中的class.phpmailer.php和class.smtp.php覆蓋lists/admin/phpmailer中的對應(yīng)文件,然后修改lists/admin/class.phplistmailer.php中36行左右處的

$this->SMTPAuth = true;$this->Helo = getConfig("website");$this->Host = PHPMAILERHOST;

為:

$this->IsSMTP();            # Add$this->SMTPAuth = true;$this->SMTPSecure = "ssl";       # Add$this->Helo = getConfig("website");$this->Host = PHPMAILERHOST;$this->Port = 465            # Add

其中phpmailer默認(rèn)端口號為25,是大多數(shù)smtp服務(wù)器的端口號,但是gmail使用的端口號是465,所以要重新設(shè)置。



注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 武平县| 涿鹿县| 乐安县| 合山市| 监利县| 松桃| 闻喜县| 麦盖提县| 苏尼特左旗| 新宁县| 买车| 凤凰县| 印江| 浪卡子县| 漳平市| 柳河县| 南京市| 东乌珠穆沁旗| 施甸县| 神农架林区| 甘泉县| 龙游县| 加查县| 如东县| 台山市| 子洲县| 双江| 无锡市| 安乡县| 屯昌县| 息烽县| 沙坪坝区| 蒙城县| 迁西县| 宽城| 那坡县| 尚义县| 平阴县| 加查县| 龙海市| 通渭县|