前端表單: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() 編碼。