一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - phplist及phpmailer(組合使用)通過(guò)gmail發(fā)送郵件的配置方法

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

2021-01-06 15:43Cheng_Tian PHP教程

這篇文章主要介紹了phplist及phpmailer通過(guò)gmail發(fā)送郵件的配置方法,分析了組合使用二者過(guò)程中的相關(guān)問(wèn)題與注意事項(xiàng),需要的朋友可以參考下

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

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

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?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  = "[email protected]"; // GMAIL username
    $mail->Password  = "mypassword";      // GMAIL password
    $mail->From    = "[email protected]";
    $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("[email protected]","Webmaster");
    $mail->AddAddress("[email protected]","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)訪問(wèn)此頁(yè)面時(shí)仍然報(bào)錯(cuò),真是令人無(wú)奈,官方給的demo怎么會(huì)無(wú)法運(yùn)行?

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

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

?
1
$mail->IsSMTP();

前插入

?
1
$mail->SMTPDebug = 1;

便可在報(bào)錯(cuò)同時(shí)得到更見(jiàn)詳細(xì)的錯(cuò)誤信息。真是好東西^_^

按照這樣修改完后,我在訪問(wèn)頁(yè)面時(shí)得到了更加詳細(xì)的說(shuō)明——“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)”。

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

?
1
;extension=php_openssl.dll

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

沒(méi)辦法了,我上網(wǎng)查了一下關(guān)于php以及apache的ssl配置的文章,發(fā)現(xiàn)僅僅是將ssl擴(kuò)展模塊開啟是不夠的,還要對(duì)openssl進(jìn)行配置,在Windows環(huán)境下配置方法倒是很簡(jiǎ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),請(qǐng)上網(wǎng)查找針對(duì)你的操作系統(tǒng)的配置ssl的方法,應(yīng)該不難找到)

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

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

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

為:

?
1
2
3
4
5
6
$this->IsSMTP();            # Add
$this->SMTPAuth = true;
$this->SMTPSecure = "ssl";       # Add
$this->Helo = getConfig("website");
$this->Host = PHPMAILERHOST;
$this->Port = 465            # Add

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

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区二区播放 | 欧美成人aletta ocean | 日韩欧美中文字幕一区 | 亚洲精品久久久992KVTV | 国产午夜成人无码免费看 | 无限资源在线观看完整版免费下载 | 国产成人精品视频一区 | 99久久精品国产综合一区 | 国产精品国产色综合色 | 亚洲 日韩 国产 中文视频 | 热辣小秘书办公室 | 国产精品一区三区 | 久久电影院久久国产 | 亚洲日本va午夜中文字幕 | 日韩毛片基地一区二区三区 | 亚洲va久久久久综合 | 久久99亚洲AV无码四区碰碰 | videodesexo中国妞| 欧美日韩中文字幕一区二区高清 | 午夜国产精品视频 | 男人天堂网www | 精品日韩欧美一区二区三区 | 亚洲激情在线 | 岛国虐乳紧缚媚药调教 | a亚洲天堂 | 美女隐私部位视频网站 | 亚洲 综合 自拍 精品 在线 | 国产日韩欧美精品在线 | kayden kross喷水 | 久热这里只有精品99国产6 | 亚洲免费闲人蜜桃 | 欧美视频一区二区三区四区 | 国产乱码免费卡1卡二卡3卡四 | 狠狠草视频 | 国亚洲欧美日韩精品 | 色橹橹 | 国产人成精品午夜在线观看 | 午夜精品久久久 | 免费看又黄又爽又猛的视频软件- | 4虎影院永久地址www | avtt在线观看 |