phplist及phpmailer(組合使用)通過gmail發送郵件的配置方法,phplistphpmailer_PHP教程

來源:互聯網
上載者:User

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


本文執行個體講述了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怎麼會有這樣的錯誤,居然會調用一個未定義的函數,而且有一些沒有必要的成分。我們只不過想先測試一下能否正常發送郵件,所以我將其修改為:

<?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";    }?>

結果發現訪問此頁面時仍然報錯,真是令人無奈,官方給的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程式設計有所協助。

您可能感興趣的文章:

  • PHP的郵件群發系統phplist配置方法詳細總結
  • PHP藉助phpmailer發送郵件
  • thinkphp使用phpmailer發送郵件的方法
  • 使用PHPMailer實現郵件發送代碼分享
  • phpmailer在伺服器上不能正常發送郵件的解決辦法
  • PHPMailer發送HTML內容、帶附件的郵件執行個體
  • phpmailer中文亂碼問題的解決方案
  • PHP使用PHPMailer發送郵件的簡單使用方法
  • ThinkPHP利用PHPMailer實現郵件發送實現代碼
  • phpmailer發送gmail郵件執行個體詳解
  • PHPMailer郵件發送的實現代碼

http://www.bkjia.com/PHPjc/1117064.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1117064.htmlTechArticlephplist及phpmailer(組合使用)通過gmail發送郵件的配置方法,phplistphpmailer 本文執行個體講述了phplist及phpmailer通過gmail發送郵件的配置方法。分享給大...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.