
php代码无法在html邮件正文中直接执行,必须先在服务器端完成数据库查询和html拼接,再将生成的纯html字符串作为邮件内容发送。
php代码无法在html邮件正文中直接执行,必须先在服务器端完成数据库查询和html拼接,再将生成的纯html字符串作为邮件内容发送。
在使用 mail() 函数发送 HTML 邮件时,一个常见误区是:试图将包含 PHP 标签(如 )的代码片段直接拼接到 $message 字符串中,期望收件人的邮箱客户端能“运行”这些 PHP 代码。这是完全不可行的——邮件客户端(如 Outlook、Gmail、Apple Mail)不具备 PHP 解析能力,它们只渲染最终的 HTML 字符串。
正确的做法是:在发送前,由你的 PHP 脚本完整执行所有逻辑(连接数据库、查询数据、生成 HTML 结构),然后将结果拼接为一段纯 HTML 字符串,再作为邮件正文发送。
以下是一个结构清晰、安全可用的实现示例:
<?php try {
// 1. 建立数据库连接(确保 database.php 已正确定义 $conn)
include_once "database.php";
// 2. 执行查询(注意:字段别名更利于读取)
$result = mysqli_query($conn, "SELECT id, UPPER(make) AS make_name FROM makes ORDER BY make_name");
if (!$result) {
throw new Exception("Database query failed: " . mysqli_error($conn));
}
// 3. 构建 HTML 邮件正文(纯字符串,不含任何 PHP 标签)
$message = '<!DOCTYPE html><meta charset="iso-8859-1"><title>Delete employee data</title><style>
body { font-family: Arial, sans-serif; margin: 0; padding: 20px; }
table { border-collapse: collapse; width: 100%; }
th, td { padding: 10px; text-align: left; border: 1px solid #ddd; }
tr:nth-of-type(odd) { background-color: #f9f9f9; }
</style><h2>Vehicle Makes List</h2>
| ID | Make |
|---|---|
| %s | %s |
â å ³é®æ³¨æäºé¡¹ï¼
- ç»ä¸åµå ¥å¯æ§è¡ PHP æ ç¾ï¼$message ä¸åªè½æ¯éæ HTML åç¬¦ä¸²ï¼ææé»è¾å¿ é¡»å¨ mail() è°ç¨å宿ï¼
- å¡å¿ 转ä¹è¾åºå 容ï¼ä½¿ç¨ htmlspecialchars() 鲿¢ XSSï¼å°¤å ¶å½æ°æ®æ¥èªæ°æ®åºæç¨æ·è¾å ¥ï¼ï¼
- æ¾å¼å£°æå符éï¼charset=iso-8859-1 éä¸ htmlspecialchars() ç第ä¸ä¸ªåæ°ä¸è´ï¼è¥æ¹ç¨ UTF-8ï¼è¯·åæ¥æ´æ° charset=utf-8 åç¼ç åæ°ï¼
- é¿å å èæ ·å¼è¿åº¦ä¾èµï¼é¨åé®ä»¶å®¢æ·ç«¯å¯¹ CSS æ¯ææéï¼å»ºè®®ä¼å 使ç¨å èæ ·å¼ï¼æ¬ä¾å·²ä¼åï¼ï¼
- æµè¯å ¼å®¹æ§ï¼æ¨èä½¿ç¨ Mailtrap æ Litmus è¿è¡è·¨å®¢æ·ç«¯é¢è§ï¼
- èèæ¿ä»£æ¹æ¡ï¼ç产ç¯å¢å»ºè®®ä½¿ç¨ PHPMailer æ Symfony Mailer çæçåºï¼å®ä»¬èªå¨å¤ç MIMEãéä»¶ãUTF-8ãSMTP 认è¯çå¤æåºæ¯ã
æ»ç»ï¼HTML é®ä»¶çæ¬è´¨æ¯ãæå¡ç«¯çæ â 客æ·ç«¯æ¸²æãï¼PHP æ¯çæå·¥å ·ï¼èéé®ä»¶ä¸çè¿è¡ç¯å¢ãçæ¸ æ§è¡æ¶æºä¸æ°æ®æµåï¼æ¯è§£å³æ¤ç±»é®é¢çæ ¹æ¬ã
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











