關於網路那些事...

網路行銷,SEO,網路趨勢,教學文章,網頁設計,生活時事

[教學] 在 windows locahlost 透過 Gmail SMTP server 寄信 ( 使用 phpmailer )

通常在租用主機環境,都會處理好mail server所需的相關設定,

如果在開發過程中,可以在local端就能測試寄發email效果,對開發者而言,一定會更加方便

因此,本文主要說明在 windows 本地 localhost( 127.0.0.1)

如何使用 phpmailer 來透過 GMAIL SMTP server 寄信

How to using phpmailer to sending gmail smtp e-mail in windows localhost

(一) 開啟 windows openssl 教學

在windows local端要透過Gmail SMTP發信前,要先開啟openssl

首先,先開啟Appache的openssl功能

1. 先在 php 資料夾內複製這兩個檔案
libeay32.dll、ssleay32.dll
並且在 windows/system32/ 貼上這兩個檔案

2. 接著,修改php.ini
找到以下兩行,去除前面分號
並且將smtp_port改成465

extension=php_openssl.dll
...
smtp_port = 465

3. 重新啟動webserver
重新啟動webserver(apache or nginx)後
查看 phpinfo.php
搜尋 OpenSSL support ,確認狀態為 enabled 則表示已經設定完成

(二) 下載 phpmailer

前往phpmailer github頁面
建議使用 composer 來安裝 [教學]
下載完畢後,載入phpmailer並且調整gmail smpt相關參數
Host設定為 "smtp.gmail.com"
SMTPSecure 設定為安全資料傳輸層 (SSL)
Port 設定為安全資料傳輸層通訊埠:465
並且填寫你的完整電子郵件地址及Gmail 密碼

另外,建議可以將 SMTP Debug 設定為 2,方便debug

send.php

<?php
//如果是直接下載phpmailer,載入請使用下面這段
///require_once "phpMailer/class.phpmailer.php";
//使用composer則使用autoload載入
require_once "vendor/autoload.php";

$mail= new PHPMailer(); 
$mail->SMTPDebug = 2;
$mail->IsSMTP();      
$mail->SMTPAuth = true;    
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;    
$mail->CharSet = "big5"; 

$mail->Username = "完整Gmail電子郵件地址";      
$mail->Password = "你的Gmail 密碼";       

          
$mail->CharSet = "utf-8"; 
$mail->Encoding = "base64";

//調整下方寄件者及收件者email
$mail->setFrom('example@gmail.com', 'CodexWorld');
$mail->addReplyTo('example@gmail.com', 'CodexWorld');
$mail->addAddress('example@gmail.com');   // Add a recipient
$mail->addCC('example@gmail.com');

$mail->isHTML(true);  // Set email format to HTML

$bodyContent = '<h1>Send Gmail Email using PHP in Localhost</h1>';
$bodyContent .= '<p>This is the HTML email sent from localhost using PHP. </p> Time:'.date("Y-m-d H:i:s");

$mail->Subject = 'Email from Localhost - '.date("Y-m-d H:i:s");
$mail->Body    = $bodyContent;

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent in '.date("Y-m-d H:i:s");
}

(三) 開啟google 的低安全性應用程式存取權限

前往:
https://www.google.com/settings/security/lesssecureapps

將安全性較低的應用程式存取權限 "開啟"
(注意! 已啟用兩步驟驗證功能的帳戶無法使用這項設定。)

否則會發生 534 5.7.14Message could not be sent.Mailer Error: SMTP connect() failed. 的錯誤
詳情可以參考 無法登入電子郵件程式 疑難排解


如果你喜歡我們的文章內容,請在這裡按個讚



最新文章推薦