用phpmailer實現網頁表單提交傳送郵件功能

Yessen發表於2018-11-21

引言:有時我們想在網頁上填好表單後,表單內容能以郵件的方式傳送給指定的人,那麼我們可以利用phpmailer這個php函式包來完成這個需求。

一、獲取郵箱授權碼

郵箱授權碼是郵箱帳號用於登入第三方客戶端的專用密碼。獲取方法根據郵箱廠家的不同略有差別,我這裡用的是163郵箱,獲取方法比較簡單,不會的可以去查一下。

二、下載phpmailer函式包

有的教程會丟給你官方的下載連結讓你去下載,這樣你去下載最新的phpmailer函式包後,可能會發現教程裡用到的包和下載的包不一樣......教程是幾年前的,包卻是最新的,坑啊。

我這裡整理了一下,需要的朋友可以下載,提取碼:ll79 。

下載解壓後得到:

三、示例程式碼

1.HTML結構

<form action="send.php" method="post">			  
    <input type="text" placeholder="姓名" name="name" id="name">
    <input type="email" placeholder="電子郵件" name="email" id="email">
    <input type="text" placeholder="聯絡電話" name="phone" id="phone">
    <input type="text" placeholder="主題" name="subject" id="subject">
    <textarea placeholder="內容" name="comments" id="comments"></textarea>
    <input type="submit" name="submit" value="提交"/>
</form>

2.send.php

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer();

$mail->isSMTP();                          // 使用SMTP服務
$mail->CharSet = "utf8";
$mail->Host = "smtp.163.com";             // 傳送方的SMTP伺服器地址
$mail->SMTPAuth = true;// 是否使用身份驗證
$mail->Username = "evolraelc9@163.com";   // 傳送方的163郵箱使用者名稱
$mail->Password = "xxxxx";                // 傳送方的郵箱授權碼
$mail->SMTPSecure = "ssl";                // 使用ssl協議方式
$mail->Port = 465;                        // 163郵箱的ssl協議方式埠號是465/994

$mail->setFrom("evolraelc9@163.com","yessen");     // 設定發件人資訊
$mail->addAddress("yessen@iexpress.ai","");        // 設定收件人資訊,可設定多個,複製貼上此行修改郵箱地址即可
$mail->addReplyTo("evolraelc9@163.com","Reply");   // 設定回覆人資訊,指的是收件人收到郵件後,如果要回復,回覆郵件將傳送到的郵箱地址
//$mail->addCC("evolraelc9@163.com");    // 設定郵件抄送人,可以只寫地址,上述的設定也可以只寫地址
//$mail->addBCC("bbbb@163.com");         // 設定祕密抄送人
//$mail->addAttachment("bug0.jpg");      // 新增附件


$mail->Subject = "網頁收到新留言啦~~";          // 郵件標題
$mail->Body = "姓名:".$_POST[name]."
               郵件:".$_POST[email]."
               電話:".$_POST[phone]."
               主題:".$_POST[subject]."
               內容:".$_POST[comments];      // 郵件正文

if(!$mail->send()){// 傳送郵件
    echo "Message could not be sent.";
    echo "Mailer Error: ".$mail->ErrorInfo;  // 輸出錯誤資訊
}else{
    echo 'Message has been sent.';
}
?>

四、結果

網頁上填好表單點選提交後,順利的話可以看到網頁顯示:Message has been sent.

然後就可以去檢視收到的郵件:

 

提示:有的朋友web伺服器用的是雲虛擬主機,需要注意的是應保證php.ini設定裡的fsockopen函式為啟用狀態。

相關文章