最近梅干正與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 = “[email protected]”; //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(“[email protected]”); //收件者郵件及名稱
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
Switch《寶可夢 Z-A》好啦魷怎麼進化?翻轉螢幕即可進化成烏賊王
Cloudflare Drop 拖曳就能部署網站,還可綁定網域與SSL
線上象棋對戰遊戲室|免註冊立即入座,真人即時對戰
樹莓派系統安裝教學|設定 Raspberry Pi OS、SSH 與首次登入
自製 GA4Exact 外掛,讓 WordPress 後台直接查看 GA4 分析報表
解決 WooCommerce Checkout Block 導致金流模組無法顯示的問題