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

PHP 簡易表單寄信實作:從 HTML 表單到 mail() 發送的最小範例

     編輯:PHP 相關知識

前端表單:email.html

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>簡易寄信表單</title></head><body>
<h1>聯絡我們</h1>
<form method="post" action="mail.php">
    <div><label>收件人 Email:</label><input type="email" name="mailto" size="35" required></div>
    <div><label>主旨:</label><input type="text" name="subject" size="35"></div>
    <div><label>內容:</label><textarea name="body" cols="50" rows="7"></textarea></div>
    <button type="submit">送出</button>
</form>
</body></html>

後端處理:mail.php

<?php
// 1. 取得並清理輸入
$to      = trim($_POST['mailto'] ?? '');
$subject = trim($_POST['subject'] ?? '(無主旨)');
$body    = $_POST['body'] ?? '(無內容)';

// 2. 基本驗證
if (!$to || !filter_var($to, FILTER_VALIDATE_EMAIL)) {
    die('❌ 請輸入有效的收件人 Email');
}

// 3. 發送(純文字郵件)
$headers = "From: noreply@example.com\r\n";
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";

$result = mail($to, $subject, $body, $headers);

// 4. 結果回饋
if ($result) {
    echo "✅ 郵件已送出至 {$to}";
} else {
    echo "❌ 郵件發送失敗,請確認伺服器已正確配置 mail 傳輸代理 (MTA)。";
}
?>

常見問題排查

  • 本機開發環境 (XAMPP/WAMP/MAMP):預設無 MTA,需修改 php.ini 設定 SMTP、smtp_port、sendmail_from,或安裝 Fake Sendmail。
  • 郵件進垃圾箱:缺少 SPF/DKIM/DMARC 設定、使用共享 IP、內容觸發垃圾郵件規則。改用 SMTP 發送 (PHPMailer) 可大幅改善。
  • 中文亂碼:確保檔案儲存為 UTF-8,標頭含 charset=UTF-8,主旨若含中文需用 mb_encode_mimeheader() 編碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved