PHP 網頁開發

PHP教學-利用Gmail的SMTP製作線上客服系統

2009/11/16

梅問題-PHP教學-利用Gmail的SMTP製作線上客服系統

  最近梅干正與PHP搏鬥中,這中間也遇到了許許多多的問題,PHP不像.net有一些元件可用,使得很多東西都得自已DIY,還記得先前曾用過C#製作線上寄信的功能,並利用Gmail的STMP來作為發信的mail主機,由於C#內建已有一些元件可用,所以就方便許多。


  

  由於梅干希望PHP也可透過Gmail來作為線上發信系統時,才發現到由於Gmail是採用SSL的方式,使得並沒有辦法直接用內建的函式,於是上網Google了一下,終於找到相關的方法,現在就來介紹一下,PHP版的Gmail線上客服系統製作。


Step1
首先,先由下方取得PHPMailer,下載完畢後解壓再把class.phpmailer.phpclass.smtp.php二個類別檔拷貝出來。

Box | MediaFire | Google
Step2
contact.html
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=“http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8” />
<title>線上客服系統</title>
<style>
    input{width:250px; border:solid 1px #ccc;}
    textarea{width:300px; height:100px; border:solid 1px #ccc;}
    table{font-size:12px; color:#666; border:solid 1px #C1C1C1;}
    table tr td{padding:7px;}
    .btn{background:#fff; width:auto;}
</style>
<script>
function checkform(){
    var name=document.getElementById(“sndname”).value;
    var mail=document.getElementById(“sendmail”).value;
    var subject=document.getElementById(“subject”).value;
    var mailbody=document.getElementById(“sendbody”).value;

if(name !="" && mail!="" && subject!="" && mailbody!=""){
    document.form1.submit();
}else{
    alert("請確認下列欄位是否都已填寫:\n1.姓名\n2.Email\n3.回應類別\n4.回應內容");
}

} </script> </head>

<body> <form id=“form1” name=“form1” method=“post” action=“sendmail.php”><br /> <h2 style=“width:400px; margin:0 auto; color:#333333;”>線上客服系統</h2> <table width=“400” height=“211” border=“0” align=“center” cellpadding=“0” cellspacing=“0”> <tr> <td width=“71” align=“center” bgcolor=“#e7e7e7”>姓名</td> <td width=“314” bgcolor=“#e7e7e7”><label> <input type=“text” name=“sndname” id=“sndname” /> </label></td> </tr> <tr> <td align=“center”>Email</td> <td><input type=“text” name=“sendmail” id=“sendmail” /></td> </tr> <tr> <td align=“center” bgcolor=“#E7E7E7”>回應類別</td> <td bgcolor=“#E7E7E7”> <select name=“subject” id=“subject”> <option value=“站務問題” selected=“selected”>站務問題</option> <option value=“合作提案”>合作提案</option> <option value=“其它問題”>其它問題</option> </select> </td> </tr> <tr> <td height=“64” align=“center”>回應內容</td> <td><textarea name=“sendbody” id=“sendbody”></textarea></td> </tr> <tr> <td colspan=“2” align=“center” bgcolor=“#FFFFFF”><label> <input type=“button” name=“button” id=“button” value=“送 出” class=“btn” onclick=“checkform();”/> <input type=“reset” name=“button2” id=“button2” value=“取 消” class=“btn”/> </label></td> </tr> </table> </form> </body> </html>


Step3
sendmail.php

<?php include(“class.phpmailer.php”); //匯入PHPMailer類別

$Name=$_POST[‘sndname’]; $Mail=$_POST[‘sendmail’]; $Subject=$_POST[‘subject’]; $Sendbody=$_POST[‘sendbody’];

$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 = “password”; //Gmail密碼

$mail->From = $Mail; //寄件者信箱 $mail->FromName = “線上客服”; //寄件者姓名

$mail->Subject =“一封線上客服信”; //郵件標題 $mail->Body = “姓名:“.$Name.”<br>信箱:“.$Mail.”<br>主題:“.$Subject.”<br>回應內容:“.$Sendbody; //郵件內容

$mail->IsHTML(true); //郵件內容為html ( true || false) $mail->AddAddress(“who@mail.com.tw”); //收件者郵件及名稱

if(!$mail->Send()) { echo “發送錯誤: “ . $mail->ErrorInfo; } else { echo “<div align=center>感謝您的回覆,我們將會盡速處理!</div>”; } ?>


在sendmail.php中:
17、18行輸入Gmail的帳號與密碼。
27行輸入收件者人的信箱。

Step4
完成後,連同剛剛的class.phpmailer.php、class.smtp.php、contact.html、sendmail.php,四隻檔案丟到PHP的主機中,並瀏覽contact.html依照欄位,填寫完畢後並按下送出,成功就會看到如下的圖示。
梅問題-PHP教學-利用Gmail的SMTP製作線上客服系統
  由於梅干也剛接觸PHP不久,若有任何錯誤的地方,也歡迎各位的指正,另外得注意到,要使用該作法的話,虛擬主機需要支援Open SSL才行,否則將會無法發送,因此這邊若不行發送的話,得詢問一下你的主機商,Gmail真得是一個好物。
範例下載:[minwt | Box | MediaFire ] ※解壓密碼:minwt.com