Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
1、Composer 安裝 phpmailer
2、ThinkPHP 中封裝郵件服務(wù)類
我把它封裝在擴(kuò)展目錄 extend/Mail.php 文件里,內(nèi)容如下:
注意:如果發(fā)送附件,建議使用英文路徑。中文路徑可能會(huì)導(dǎo)致附件發(fā)送失敗,收到的郵件沒(méi)有附件。
上面需要的一些配置參數(shù),我把它們放在擴(kuò)展配置目錄 application/extra/mail.php 文件里 ,內(nèi)容如下:
注意:一般默認(rèn)端口 25。如果使用了安全協(xié)議 ssl,那么端口號(hào)一般是 465 或 587。譬如 126 郵箱。
更多配置參數(shù),可以看看源碼:https://github.com/PHPMailer/PHPMailer/blob/master/class.phpmailer.php
3、測(cè)試
這里我使用 126 郵箱,安全協(xié)議 ssl,端口號(hào) 465,發(fā)送 html 內(nèi)容,測(cè)試成功:
參考鏈接:
phpmail 的 STMP 郵件實(shí)例:https://github.com/PHPMailer/PHPMailer/blob/master/examples/smtp.phps
項(xiàng)目當(dāng)中有很多時(shí)候都需要郵箱提醒,那么郵箱提醒功能是怎么做的呢,下面我以實(shí)際的例子作為介紹。
登錄QQ郵箱找到設(shè)置一欄,開(kāi)啟POP3/SMTP服務(wù),這里我已經(jīng)開(kāi)啟了,具體的開(kāi)啟方法可以按照提示操作,開(kāi)啟之后還需要生成一個(gè)授權(quán)碼,這個(gè)授權(quán)碼在發(fā)送端的代碼是必傳的參數(shù)之一,到這里準(zhǔn)備工作就算做好了,剩下的就是開(kāi)始寫代碼。
具體代碼如下:
/**
* 郵件發(fā)送函數(shù)
*/
function sendMail($to, $title, $content) {
$email=[
"smtpname"=>"smtp.qq.com",
"email"=>"906556946@qq.com",
"username"=>"動(dòng)力3023",
"password"=>"",//授權(quán)碼
];
require('./vendor/PHPMailer/PHPMailerAutoload.php');
$mail=new \PHPMailer(); //實(shí)例化
$mail->IsSMTP(); // 啟用SMTP
$mail->Host=$email['smtpname']; //smtp服務(wù)器的名稱(這里以QQ郵箱為例)
$mail->Username=$email['email']; //你的郵箱名
$mail->Password=$email['password'] ; //授權(quán)碼,注意不是登錄密碼
$mail->From=$email['email']; //發(fā)件人地址(也就是你的郵箱地址)
$mail->FromName=$email['username']; //發(fā)件人姓名
$mail->SMTPAuth=true; //啟用smtp認(rèn)證
$mail->SMTPSecure='ssl';
$mail->Port=465;
$mail->AddAddress($to,"尊敬的客戶");
$mail->WordWrap=50; //設(shè)置每行字符長(zhǎng)度
$mail->IsHTML(true); // 是否HTML格式郵件
$mail->CharSet='utf-8'; //設(shè)置郵件編碼
$mail->Subject=$title; //郵件主題
$mail->Body=$content; //郵件內(nèi)容
$mail->AltBody="這是一個(gè)純文本的身體在非營(yíng)利的HTML電子郵件客戶端"; //郵件正文不支持HTML的備用顯示
return($mail->Send());
}
$res=sendMail('906556946@qq.com', '網(wǎng)站留言', '留言成功');
發(fā)送的內(nèi)容樣式是可以自定義的,如果需要的話可以直接寫html樣式,比如這樣:
郵箱中收到郵件的截圖:
《完》
大家如果喜歡的話麻煩點(diǎn)贊、關(guān)注、轉(zhuǎn)發(fā),謝謝大家。
用戶在 HTML 表單中填寫并提交數(shù)據(jù)時(shí),可以使用 PHP 來(lái)接收并處理這些數(shù)據(jù)。要實(shí)現(xiàn)這一點(diǎn),需要?jiǎng)?chuàng)建一個(gè) PHP 腳本來(lái)處理提交的數(shù)據(jù),然后將 HTML 表單的 "action" 屬性設(shè)置為該腳本的文件路徑。表單提交的數(shù)據(jù)需要進(jìn)行驗(yàn)證和過(guò)濾,以確保數(shù)據(jù)的完整性和安全性。可以使用條件語(yǔ)句、正則表達(dá)式、過(guò)濾器函數(shù)等方法來(lái)驗(yàn)證和過(guò)濾數(shù)據(jù),并使用 htmlspecialchars() 函數(shù)轉(zhuǎn)義 HTML 標(biāo)記,以防止 XSS 攻擊。
以下是一個(gè)簡(jiǎn)單的示例:
HTML 表單代碼:
<form action="submit.php" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<label for="email">Email:</label>
<input type="email" id="email" name="email">
<button type="submit">Submit</button>
</form>
PHP 代碼(submit.php):
<?php
// 獲取表單提交的數(shù)據(jù)
$name=$_POST['name'];
$email=$_POST['email'];
// 在這里進(jìn)行處理,例如將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中
// ...
// 返回一個(gè)響應(yīng),告訴用戶數(shù)據(jù)已經(jīng)被成功提交
echo "Thank you for submitting the form, $name!";
?>
在上面的示例中,表單的 "action" 屬性設(shè)置為 "submit.php",這意味著提交表單時(shí),數(shù)據(jù)將被發(fā)送到 submit.php 文件中的 PHP 代碼中進(jìn)行處理。PHP 代碼使用 $_POST 數(shù)組來(lái)獲取表單提交的數(shù)據(jù),然后進(jìn)行處理,例如將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。最后,PHP 代碼返回一個(gè)響應(yīng),告訴用戶數(shù)據(jù)已經(jīng)被成功提交。在處理表單數(shù)據(jù)時(shí),一定要對(duì)用戶輸入進(jìn)行驗(yàn)證和過(guò)濾,以防止安全漏洞。
需要對(duì)表單提交的數(shù)據(jù)進(jìn)行驗(yàn)證和過(guò)濾,以確保數(shù)據(jù)的完整性和安全性。以下是一些常見(jiàn)的方法:
1、驗(yàn)證表單字段:在 PHP 代碼中使用條件語(yǔ)句和正則表達(dá)式等方法來(lái)驗(yàn)證表單字段的有效性,例如驗(yàn)證電子郵件地址的格式是否正確。
$email=$_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// 如果郵件地址格式不正確,則顯示錯(cuò)誤消息
echo "Invalid email address";
}
2、過(guò)濾輸入數(shù)據(jù):使用 PHP 中的過(guò)濾器函數(shù)來(lái)過(guò)濾表單輸入數(shù)據(jù),以防止 XSS 攻擊和 SQL 注入等安全漏洞。
$name=$_POST['name'];
$name=filter_var($name, FILTER_SANITIZE_STRING); // 過(guò)濾特殊字符和標(biāo)簽
3、防止跨站腳本攻擊(XSS):在 PHP 代碼中使用 htmlspecialchars() 函數(shù)來(lái)轉(zhuǎn)義 HTML 標(biāo)記,防止惡意腳本注入到頁(yè)面中。
$name=$_POST['name'];
$name=htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); // 轉(zhuǎn)義 HTML 標(biāo)記
4、防止 SQL 注入攻擊:在 PHP 代碼中使用參數(shù)化查詢或準(zhǔn)備語(yǔ)句來(lái)執(zhí)行數(shù)據(jù)庫(kù)操作,以防止惡意 SQL 語(yǔ)句注入到數(shù)據(jù)庫(kù)中。
$stmt=$pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->execute();
通過(guò)這些方法,可以確保表單提交的數(shù)據(jù)是安全和有效的,并且能夠正常地處理和存儲(chǔ)到數(shù)據(jù)庫(kù)中。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。