最近梅干正與PHP搏鬥中,這中間也遇到了許許多多的問題,PHP不像.net有一些元件可用,使得很多東西都得自已DIY,還記得先前曾用過C#製作線上寄信的功能,並利用Gmail的STMP來作為發信的mail主機,由於C#內建已有一些元件可用,所以就方便許多。
由於梅干希望PHP也可透過Gmail來作為線上發信系統時,才發現到由於Gmail是採用SSL的方式,使得並沒有辦法直接用內建的函式,於是上網Google了一下,終於找到相關的方法,現在就來介紹一下,PHP版的Gmail線上客服系統製作。
Step1
首先,先由下方取得PHPMailer,下載完畢後解壓再把class.phpmailer.php、class.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>”; } ?>
17、18行輸入Gmail的帳號與密碼。
27行輸入收件者人的信箱。
Step4
完成後,連同剛剛的class.phpmailer.php、class.smtp.php、contact.html、sendmail.php,四隻檔案丟到PHP的主機中,並瀏覽contact.html依照欄位,填寫完畢後並按下送出,成功就會看到如下的圖示。
由於梅干也剛接觸PHP不久,若有任何錯誤的地方,也歡迎各位的指正,另外得注意到,要使用該作法的話,虛擬主機需要支援Open SSL才行,否則將會無法發送,因此這邊若不行發送的話,得詢問一下你的主機商,Gmail真得是一個好物。
範例下載:[minwt | Box | MediaFire ] ※解壓密碼:minwt.com