Sunday, August 29, 2010

PHPMailer - Send e-mail using Gmail SMTP server from PHP

PHP需透過SMTP(Simple Mail Transfer Protocol)外寄伺服器發送郵件,為了避免本地端的SMTP server被擋信,於是乎我很自然地想到利用Gmail的SMTP server來完成此任務。然而我沒有找到直接修改"php.ini"檔的好辦法,卻發現了這款程式:

解壓縮後在"\PHPMailer\docs\use_gmail.txt"可找到這份範例程式碼,有幾個地方需要注意:
  • Gmail SMTP server相關設定如下,請修改使用者名稱與密碼:
<?php
require("PHPMailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Username = "Username@gmail.com";
$mail->Password = "Password";

    • 其餘郵件相關的設定比較簡單易懂:
    $mail->From = $Sender_email;
    $mail->FromName = $Sender_name;
    $mail->AddAddress($Receiver_email,$Receiver_name);
    $mail->AddReplyTo($Sender_email,$Sender_name);
    $mail->Subject = "My Subject";
    $mail->Body = "HTML Body";
    
      • 最後確認以HTML發送即可:
      $mail->IsHTML(true);
      if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
      } else {
        echo "Message has been sent!";
      ?>
      

        有了此範例就可以輕鬆做出客服留言頁面,只要把表單中的資料取出傳送即可。或者也可以參考PHPMailer-FE這款程式製作。值得一提的是,上述操作使用英文介面沒有問題,但遇到中文寄件者或是主旨時就會變成亂碼無法判讀,解決辦法其實也很簡單,只要補上一行程式碼,將編碼方式設定為UTF-8即可。
        $mail->CharSet = "UTF-8";
        


        <參考資料來源>
        TECH MEAL - [GMAIL] - [PHP] - Send email using PHP with Gmail
        梅問題教學網 - PHP教學-利用Gmail的SMTP製作線上客服系統
        我的網頁設計 - 實作PHPMailer郵件函式庫
        Stack Overflow - Send email using GMail SMTP server from PHP page

        No comments: