iT邦幫忙

DAY 20
2

遭遇PHP之經驗分享系列 第 20

[鐵人賽Day20]PHP表單搭配PHPMailer寄信-使用Gmail寄出

最近在做會員系統的驗證,剛好碰到要用Mail來寄出驗證信,在請求Google大神之後,得知了PHPMailer這套PHP套件
PHPMailer官方網站:http://phpmailer.worxware.com/
而套件的下載處:https://github.com/Synchro/PHPMailer
(右下角有個Download ZIP)

下載後解壓縮後,該如何使用Gmail寄出呢?
在官網很貼心地寫了份範例給我們使用者參考
參考資料:http://phpmailer.worxware.com/index.php?pg=examplebgmail

重點:由於通訊協定是走SSL,所以PHP的SSL功能要開啟,在php.ini裡「;extension=php_openssl.dll」這段,把字串前的分號「;」拿掉,在重新啟動Apache Web Server
(可用phpinfo();函式檢查有否開啟此功能)

而本人也實作了一份,供各位讀者參考(這裡是示範客戶建議聯絡表單),示範程式碼及示意圖如下:
「contect.php」

        <meta http-equiv="content-type" charset="utf-8" />
        <title>留言給我們</title>
    

    <form id="form1" name="form1" method="post" action="sendmail.php">
    <fieldset>
    <legend>留言給我們</legend>
    <label>您的大名:</label>
    <input id="C_name" name="C_name" type="text" />
    <br />

    <label>您的Email:</label>
    <input id="C_email" name="C_email" type="text" />
    <br />

    <label>您的電話號碼:</label>
    <input id="C_tel" name="C_tel" type="text" />
    <br />

    <label>您的寶貴意見:</label>
    <textarea id="C_message" name="C_message"></textarea>
    <br />

    <input id="submit" name="submit" type="submit" value="確定送出" />
    </fieldset>
    </form>

光有表單是不夠的,還需要一份驅動文件(官方範例修改)
這裡與範例不同的地方在,require_once是要去抓取PHPMailerAutoload.php
在程式碼裡,需要改的地方有Gamil帳號、Gamil密碼,而寄件者信箱跟寄件者姓名,則是選擇性的
但要是沒填寫,在寄件者信箱系統會自動抓取寄件的mail位置,而寄件者姓名則會顯示Root User

示範程式碼如下:
「sendmail.php」

<?php
    require_once('./phpmailer/PHPMailerAutoload.php');
    $C_name=$_POST['C_name'];
    $C_email=$_POST['C_email'];
    $C_tel=$_POST['C_tel'];
    $C_message=$_POST['C_message'];
   
    $mail= new PHPMailer();                          //建立新物件
    $mail->IsSMTP();                                    //設定使用SMTP方式寄信
    $mail->SMTPAuth = true;                        //設定SMTP需要驗證
    $mail->SMTPSecure = "ssl";                    // Gmail的SMTP主機需要使用SSL連線
    $mail->Host = "smtp.gmail.com";             //Gamil的SMTP主機
    $mail->Port = 465;                                 //Gamil的SMTP主機的埠號(Gmail為465)。
    $mail->CharSet = "utf-8";                       //郵件編碼
    $mail->Username = "XXXX@gmail.com"; //Gamil帳號
    $mail->Password = "XXXXX";                 //Gmail密碼
    $mail->From = "XXXX@gmail.com";        //寄件者信箱
    $mail->FromName = "XXXX";                  //寄件者姓名
    $mail->Subject ="來自".$C_name."留言"; //郵件標題
    $mail->Body = "姓名:".$C_name."<br />信箱:".$C_email."<br />電話:".$C_tel."<br />回應內容:".$C_message; //郵件內容
    $mail->IsHTML(true);                             //郵件內容為html
    $mail->AddAddress("$C_email");            //收件者郵件及名稱
    if(!$mail->Send()){
        echo "Error: " . $mail->ErrorInfo;
    }else{
        echo "<b>感謝您的留言,您的建議是我們前進的動力。</b>";
    }
?>

在表單案送出後,會跳出是否成功,成功則顯示您設定的訊息,失敗則會出現錯誤訊息,示意圖如下:

在寄出後,可到信箱去收取看看是否有收到信件:


上一篇
[鐵人賽Day19]strlen與mb_strlen的差別與應用
下一篇
[鐵人賽Day21]判斷資料庫回傳是否有資料(使用mysql_num_row來處理)
系列文
遭遇PHP之經驗分享30

尚未有邦友留言

立即登入留言