首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 語法入門(五):mail() 函式與線上寄信表單實作

     編輯:PHP 綜合知識

PHP 語法系列(五):掌握 mail() 函式,打造線上聯繫表單

網站若能直接在頁面填寫並寄出信件,無需啟動郵件軟體,使用者體驗將大幅提升。本篇介紹 `mail()` 函式語法,並實作一個「寄信給站長」的完整範例。

mail() 函式語法

mail(收信人, 主題, 內容, 郵件標頭);
  • 收信人:單一或多個 Email,逗號分隔。
  • 主題:字串,不可包含換行。
  • 內容:純文字或 HTML(需在標頭宣告 `Content-Type: text/html`)。
  • 郵件標頭:`From`、`Cc`、`Bcc`、`Reply-To`、`Content-Type` 等,每行以 `\r\n` 分隔。

實作:線上寄信給站長

email.html(前端表單)

<form action="mail.php" method="post">
  發件人:<input type="text" name="from" size="25" required><br>
  主題:<input type="text" name="subject" size="20" required><br>
  內容:<br>
  <textarea name="content" cols="80" rows="15" required>你好,站長:</textarea><br>
  <input type="submit" value="寄出"> <input type="reset" value="重寫">
</form>

mail.php(後端處理)

<?php
$from    = trim($_POST['from'] ?? '');
$subject = trim($_POST['subject'] ?? '');
$content = trim($_POST['content'] ?? '');

if ($from === '' || $subject === '' || $content === '') {
    exit('資料未填完整,請 返回');
}

$body  = "[主題] $subject\n";
$body .= "[發件人] $from\n";
$body .= $content;

$headers = "From: $from\r\nReply-To: $from\r\nContent-Type: text/plain; charset=utf-8";

$to = 'webmaster@example.com';
$ok = mail($to, $subject, $body, $headers);
echo $ok ? '寄件成功!' : '寄件失敗!!!';
?>

常見坑與最佳實務

  1. 編碼宣告:標頭必須加 `Content-Type: text/plain; charset=utf-8`,否則中文易亂碼。
  2. 垃圾信過濾:純 `mail()` 寄出的信常被判定為垃圾信,生產環境強烈建議改用 SMTP 函式庫(PHPMailer、SwiftMailer、Symfony Mailer)。
  3. 注入防範:`$from` 若包含換行符,攻擊者可注入 `Bcc` 標頭竊取收件人清單。務必過濾:`$from = str_replace(["\r","\n"], '', $from);`。
  4. 非同步發送:寄信耗時,建議寫入資料庫隊列,由背景 Worker 發送,避免使用者等待。

系列總結

到此《談談 PHP 語法》系列告一段落。我們從變數、陣列、運算子、表單傳值、Cookie/Session、郵件函式,建立了 PHP 入門基礎。要真正精通,還需深入資料庫操作、框架(Laravel/Symfony)、Composer 套件管理、測試與部署流程。祝各位在 PHP 之路上越走越遠!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved