首頁 後端開發 php教程 phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法_php技巧

phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法_php技巧

May 16, 2016 pm 07:55 PM
gmail phpmailer 傳送郵件

本文实例讲述了phplist及phpmailer通过gmail发送邮件的配置方法。分享给大家供大家参考,具体如下:

一般来说,只要你使用的不是gmail邮箱,那么利用phplist发送邮件只要按照前面《PHP的邮件群发系统phplist配置方法详细总结》配置就够了。但若你如同我一样不幸,必须使用gmail这种有ssl验证的邮箱,那么恭喜你,我的不幸现在已然成为你的幸运,经过数天的尝试,我终于成功将gmail与phplist组合在了一起。现将经验分享于此,希望对各位同我一般境遇的同志有用。另外,phplist的核心是phpmailer,我提出的解决方案也主要是围绕phpmailer的,所以需要使用phpmailer通过gmail发送邮件而不能成功者也可以参考我的方法。

首先按照《PHP的邮件群发系统phplist配置方法详细总结》中的配置方法通过gmail发送邮件,在发送测试邮件时phplist会报告发送邮件失败,在事件日志(eventlog)里会有错误提示“Mailer Error: The following From address failed:...”,说是发件人地址存在问题。难道是已经连上smtp服务器,但是发送邮件过程中存在问题吗?可以用一个方法试验一下到底连没连上smtp服务器:我把config.php文件中的邮箱帐户密码故意填错,结果发送测试邮件时仍然报同样的错误,看来是根本就没连上smtp服务器,这phplist的错误报告也太……

知道是没连上smtp服务器那就说明问题出现在phplist发送邮件的核心——另一款著名开源软件phpmailer。

上网查了一下phpmailer发送gmail邮件的资料,发现人们说旧版本的phpmailer不支持ssl验证,不能连接gmail的smtp服务器,而此问题已在新版的phpmailer中解决了。

打开lists/admin/phpmailer/ChangeLog.txt,发现最新版的phplist自带的phpmailer的版本是1.73,是2005年出的,确实不算新。于是上phpmailer的官网下了个最新的5.1的。

我想先研究一下新版的phpmailer是如何解决ssl验证的问题的,于是看了一下其自带的一些说明文档,碰巧发现在PHPMailer_v5.1/docs下有一个use_gmail.txt,看来是官方比较重视gmail问题,专门出了一个demo供人参考。打开一看也确实是一个完整的php页面文件,基本上修改了文件扩展名、邮箱用户名和密码就能使用,但如果仅仅如此修改,在访问该测试页面时会报错,也不知官方出的demo怎么会有这样的错误,居然会调用一个未定义的函数,而且有一些没有必要的成分。我们只不过想先测试一下能否正常发送邮件,所以我将其修改为:

<&#63;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";
    }
&#63;>

登入後複製

结果发现访问此页面时仍然报错,真是令人无奈,官方给的demo怎么会无法运行?

这时我忽然想起PHPMailer_v5.1/docs下有一个名为Note_for_SMTP_debugging.txt的文件,现在我不正是在为连不上smtp服务器而烦恼吗,不妨看一下里面提供的调试方法。

打开文件看完第一行就眼前一亮,这正是我所需要的!其实使用方法也很简单,只要在

$mail->IsSMTP();

登入後複製

前插入

$mail->SMTPDebug = 1;

登入後複製

便可在报错同时得到更见详细的错误信息。真是好东西^_^

按照这样修改完后,我在访问页面时得到了更加详细的说明——“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,果然搜到一个关于ssl的扩展

;extension=php_openssl.dll

登入後複製

它没有被打开。去掉其前面用于注释的“;”,然后重启服务器,再次访问测试页面use_gmail.php,仍然是同样的错误提示。

没办法了,我上网查了一下关于php以及apache的ssl配置的文章,发现仅仅是将ssl扩展模块开启是不够的,还要对openssl进行配置,在Windows环境下配置方法倒是很简单——找到php安装目录下的ssleay32.dll和libeay32.dll,将这二者复制到windows下的system32目录中即可(在php.ini中开启extension=php_openssl.dll还是必要的)。当然,不想“污染”system32目录的同志们可以用修改环境变量的方法,只要让ssleay32.dll和libeay32.dll在系统路径下就可以了。(如果你使用的不是winidows操作系统,请上网查找针对你的操作系统的配置ssl的方法,应该不难找到)

这回再访问use_gmail.php发现可以成功发送了!

在此基础上,我们的phplist的问题也可以解决了:用新版phpmailer中的class.phpmailer.php和class.smtp.php覆盖lists/admin/phpmailer中的对应文件,然后修改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默认端口号为25,是大多数smtp服务器的端口号,但是gmail使用的端口号是465,所以要重新设置。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在 Gmail 中新增超連結至文字或圖像 如何在 Gmail 中新增超連結至文字或圖像 May 06, 2023 pm 06:07 PM

不管有多少即時訊息應用程式來來去去,郵件總是給人一種完全不同的感覺。郵寄確實是Gmail的代名詞。更別說專業的前台了,Gmail是避不開的,就是避不開!由於Gmail的使用如此頻繁,因此無論什麼事情,您都必須知道如何才能讓您的Gmail體驗最順暢、最高效。您很可能需要在電子郵件正文中添加大量網絡鏈接,如果您有這麼多鏈接,它肯定會顯得笨拙。但是連結確實是必要的,即使長連結肯定會讓你的郵件看起來很醜。那麼有出路嗎?超連結怎麼樣?您如何將連結隱藏在文字或圖像中?聽起來很酷?哦,是的,Gmail非

PHP使用PHPMailer傳送多人郵件的方法和步驟 PHP使用PHPMailer傳送多人郵件的方法和步驟 May 22, 2023 pm 06:10 PM

在Web應用程式中,往往需要將郵件一次發送給多個收件者。 PHP是一種很流行的Web開發語言,而PHPMailer是一種常見的發送郵件的PHP類別庫。 PHPMailer提供了豐富的接口,使得在PHP應用程式中發送郵件變得更加方便和易於使用。在本篇文章中,我們將介紹如何使用PHPMailer向多個收件者傳送郵件的方法和步驟。下載PHPMailer首先需要在官網(

如何從 PC 或手機上的 Gmail 刪除 Boomerang 如何從 PC 或手機上的 Gmail 刪除 Boomerang Apr 14, 2023 pm 10:46 PM

如何從 Gmail 中刪除 Boomerang在下面找到我們的逐步指南,以從您的 PC 或手機上的 Gmail 帳戶中刪除 Boomerang。在電腦上要從 Gmail 中移除 Boomerang,請在您的電腦上開啟 Google Chrome 瀏覽器。在Google瀏覽器中,點選畫面右上角的  三點圖示。從下拉式選單中選擇更多工具。從下一個下拉式選單中點選擴充功能。在「擴充功能」畫面上,找

PHP開發實務:使用PHPMailer傳送郵件到MySQL資料庫的用戶 PHP開發實務:使用PHPMailer傳送郵件到MySQL資料庫的用戶 Aug 05, 2023 pm 06:21 PM

PHP開發實務:使用PHPMailer發送郵件到MySQL資料庫中的使用者引言:在現代互聯網建設中,郵件是一種重要的溝通工具。無論是用戶註冊、密碼重置,還是電子商務中的訂單確認,發送電子郵件都是必不可少的功能。本文將介紹如何使用PHPMailer來傳送電子郵件,並將郵件資訊儲存到MySQL資料庫中的使用者資訊表中。一、安裝PHPMailer庫PHPMailer是

如何在 Gmail 中刪除自動完成的電子郵件地址 如何在 Gmail 中刪除自動完成的電子郵件地址 Apr 21, 2023 am 10:46 AM

Gmail是Google推出的最受歡迎的網頁為基礎的電子郵件伺服器,它具有許多在瀏覽、編輯和發送電子郵件時很有幫助的強大功能。其中一項功能是自動完成列表,它允許用戶在完成輸入完整地址之前查看已儲存為聯絡人的電子郵件地址列表。此功能確實很有用,但有時它可能不是很好的方法,因為可能有一些電子郵件地址不再有效或可能已被使用者刪除。例如,離開組織的人無法再存取公司電子郵件地址。但是有一種方法可以刪除那些在Gmail的自動完成清單中突出顯示的電子郵件地址。如果您還想從Gmail自動完成清單中刪除電子郵件

Google Gemini 現已出現在 Gmail 應用中:在 Android 裝置上透過 AI 進行智慧電子郵件搜索 Google Gemini 現已出現在 Gmail 應用中:在 Android 裝置上透過 AI 進行智慧電子郵件搜索 Aug 31, 2024 am 09:54 AM

谷歌正在透過人工智慧驅動的問答功能擴展其在 Android 上的 Gmail 應用程序,該功能已在 Gmail 網路版中提供,並由谷歌的 Gemini AI 助手提供支援。用戶現在可以透過詢問具體資訊來更有效地搜尋收件匣

如何在 iPhone 和 iPad 上的郵件應用程式中將 Gmail 設定為刪除而不是存檔 如何在 iPhone 和 iPad 上的郵件應用程式中將 Gmail 設定為刪除而不是存檔 Apr 13, 2023 pm 02:34 PM

您是否注意到,當您嘗試在 iOS 上刪除 Gmail 中的郵件時,您只會看到存檔選項?繼續閱讀以了解如何在 iPhone 上刪除 Gmail,而不是在郵件應用程式中存檔。更改使用iPhone 和 iPad上的郵件應用程式歸檔 Gmail 電子郵件的預設選項的設定完全隱藏在設定中,但一旦你知道要去哪裡,它就可以快速更改。請記住,本教學適用於透過 iPhone 和 iPad 上的 Apple 郵件應用程式使用 Gmail 的用戶。另一種選擇是在 iPhone/iPad 上使用 Gmail 應用程式。您甚至

如何使用PHP和PHPMAILER發送帶有內嵌圖片的HTML郵件? 如何使用PHP和PHPMAILER發送帶有內嵌圖片的HTML郵件? Jul 22, 2023 am 11:29 AM

如何使用PHP和PHPMAILER發送帶有內嵌圖片的HTML郵件? HTML郵件是一種更豐富和個人化的郵件形式,可以在郵件中插入圖片、連結和樣式。而內嵌圖片是指在HTML郵件中直接將圖片作為郵件的一部分發送,而不是透過附件方式發送。在PHP中,我們可以藉助PHPMAILER來傳送帶有內嵌圖片的HTML郵件。 PHPMAILER是一個功能強大的PHP郵件發送類別庫

See all articles