第一部分:基础概念与准备工作
在开始之前,你需要了解几个关键概念,并做好准备工作。

Zen Cart 邮件系统的工作原理
Zen Cart 的邮件内容是“分离”的,邮件的HTML结构(骨架)存储在 .html 文件中,而(如订单详情、产品名称)则由对应的 .php 文件填充。
- HTML 模板文件:定义了邮件的布局、样式、颜色和图片。
email_template.html定义了所有邮件的通用外观。 - PHP 内容文件:定义了邮件的具体内容。
order.php包含了订单确认邮件的所有文字信息,如“尊敬的 [客户姓名]...”。 - 语言文件:存储了邮件中使用的静态文本,如“订单确认”、“感谢您的惠顾”等,位于
includes/languages/your-language/目录下。
准备工作
- FTP/SFTP 客户端:你需要一个 FTP 工具(如 FileZilla)来连接到你的服务器。
- 文本编辑器:强烈推荐使用专业的代码编辑器,如 VS Code、Sublime Text 或 Notepad++。切勿使用 Word 等文字处理软件,它们会破坏代码格式。
- Zen Cart 后台管理员权限:用于修改一些基础设置。
- 网站备份:在修改任何文件之前,请务必备份你的整个网站,特别是
includes和admin目录,这是最重要的安全步骤!
第二部分:修改邮件的 HTML 模板(改变外观)
这部分主要修改邮件的“脸面”,包括颜色、字体、Logo 和布局。
找到 HTML 模板文件
Zen Cart 的默认邮件模板文件位于:
/includes/templates/template_default/templates/email/
如果你使用了自定义模板(my_custom_template),那么文件路径会变为:
/includes/templates/my_custom_template/templates/email/

在 email 目录下,你会看到类似 email_template.html、email_template_extra.html 等文件。
email_template.html:这是主模板文件,绝大多数邮件(如订单确认、账户创建)都使用它作为基础。email_template_extra.html:用于一些额外的邮件,如密码重置、新客户欢迎邮件等。
最佳实践:不要直接修改 template_default 里的文件,你应该复制 template_default 下的 email 文件夹,然后粘贴到你正在使用的自定义模板目录中(/includes/templates/my_custom_template/templates/),这样,你的修改就不会在升级 Zen Cart 时被覆盖。
修改 HTML 模板(以 email_template.html 为例)
用你的文本编辑器打开 email_template.html 文件,它是一个标准的 HTML 文件,你可以像修改普通网页一样修改它。
常见的修改项:
-
添加 Logo: 在
<body>标签后找到<h1>标签,将你的 Logo 图片链接替换掉默认的 Zen Cart Logo。<!-- 原始代码 --> <h1><a href="{$store_url}"><img src="{$logo}" alt="{$store_name}" /></a></h1> <!-- 修改后 (替换 logo.png 为你的Logo文件名) --> <h1><a href="{$store_url}"><img src="{$logo}" alt="{$store_name}" /></a></h1>你的 Logo 文件应该放在
/includes/templates/你的模板/images/目录下。 -
修改颜色: 找到
<style>标签,修改 CSS 属性。/* 原始代码 */ body { background-color: #f7f7f7; color: #555555; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.5; } h1, h2, h3 { color: #333333; } a { color: #0066cc; } /* 修改后 (将主色调改为绿色) */ body { background-color: #f7f7f7; color: #555555; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.5; } h1, h2, h3 { color: #2e7d32; } /* 绿色 */ a { color: #2e7d32; text-decoration: none; } /* 绿色链接,无下划线 */ -
修改页眉/页脚文字: 直接在 HTML 中找到
<p>标签并修改其中的文字。<!-- 原始代码 --> <p>如果您有任何问题,请随时回复此邮件。</p> <!-- 修改后 --> <p>如果您对订单有任何疑问,欢迎随时通过客服热线 400-xxx-xxxx 联系我们。</p>
-
添加页脚签名或免责声明: 在邮件末尾的
{$FOOTER}变量之后添加。... <p>{$FOOTER}</p> <!-- 在这里添加你的自定义内容 --> <hr> <p style="font-size: 12px; color: #888;"> 本邮件由系统自动发送,请勿直接回复。<br> © {$year} {$store_name}. 保留所有权利。 </p> ...
保存文件并测试
- 保存修改后的
email_template.html文件。 - 登录你的 Zen Cart 后台,访问 工具 -> 店铺 -> 邮件。
- 点击 “发送测试邮件”,将测试邮件发送到你自己的邮箱,查看修改效果。
第三部分:修改邮件的 PHP 内容(改变文字信息)
这部分主要修改邮件中显示的动态文字,尊敬的 [客户姓名]”或“您的订单 [订单号] 已创建”。
找到 PHP 内容文件
这些文件位于:
/includes/modules/pages/your-page-name/
订单确认邮件的内容文件是:
/includes/modules/pages/checkout_process/checkout_process.php
account.php:账户创建/更新邮件password_forgotten.php:密码重置邮件contact_us.php:联系我们表单提交通知邮件checkout_process.php:订单确认邮件
修改 PHP 内容文件
打开 checkout_process.php,你会看到类似这样的代码:
// ... 一些代码 ... $email_html = $smarty->fetch(CURRENT_TEMPLATE . '/templates/email/checkout_process.html'); // 加载HTML模板 $email_text = $smarty->fetch(CURRENT_TEMPLATE . '/templates/email/checkout_process.html'); // 加载文本模板 // 邮件主题 $email_subject = EMAIL_SUBJECT_ORDER_CONFIRMATION; // 邮件正文内容 (HTML) $HTML = '<strong>' . ENTRY_GUEST . ' ' . $order->customer['name'] . '</strong>,'; $HTML .= '<br />' . TEXT_EMAIL_THANKS_FOR_SHOPPING . '<br /><br />'; $HTML .= TEXT_EMAIL_FOLLOWING_IS . '<br /><br />'; $HTML .= '<strong>' . ENTRY_ORDER_NUMBER . ' ' . $order->info['order_number'] . '</strong><br />'; $HTML .= '<strong>' . ENTRY_DATE_ORDERED . ' ' . zen_date_long($order->info['date_purchased']) . '</strong><br /><br />'; // ... 更多内容 ... // 邮件正文内容 (纯文本) $TEXT = ENTRY_GUEST . ' ' . $order->customer['name'] . ",\n\n"; $TEXT .= TEXT_EMAIL_THANKS_FOR_SHOPPING . "\n\n"; $TEXT .= TEXT_EMAIL_FOLLOWING_IS . "\n\n"; $TEXT .= ENTRY_ORDER_NUMBER . ' ' . $order->info['order_number'] . "\n"; $TEXT .= ENTRY_DATE_ORDERED . ' ' . zen_date_long($order->info['date_purchased']) . "\n\n"; // ... 更多内容 ... // 发送邮件 zen_mail($order->customer['name'], $order->customer['email_address'], $email_subject, $HTML, $TEXT, $from, $from, $attachments, true); // ... 一些代码 ...
常见的修改项:
-
修改问候语: 找到
$HTML和$TEXT变量,修改它们开头的字符串。// 原始代码 $HTML = '<strong>' . ENTRY_GUEST . ' ' . $order->customer['name'] . '</strong>,'; $TEXT = ENTRY_GUEST . ' ' . $order->customer['name'] . ","; // 修改后 (假设你的语言文件中定义了 MY_DEAR_CUSTOMER) $HTML = '<strong>' . MY_DEAR_CUSTOMER . ' ' . $order->customer['name'] . '</strong>,'; $TEXT = MY_DEAR_CUSTOMER . ' ' . $order->customer['name'] . ",";
-
添加自定义信息: 在
$HTML和$TEXT变量中直接添加你的文字。// 在 $HTML 中添加 $HTML .= '<br /><br />'; $HTML .= '<p style="color: #e74c3c;">温馨提示:您的订单预计将在 3 个工作日内发货。</p>'; // 在 $TEXT 中添加 (纯文本版本) $TEXT .= "\n\n"; $TEXT .= "温馨提示:您的订单预计将在 3 个工作日内发货,\n";
-
使用语言常量: 为了便于多语言管理和维护,建议将所有静态文本都定义在语言文件中,然后在 PHP 文件中调用。
- 打开你的语言文件:
/includes/languages/your-language/checkout_process.php - 添加一个常量:
define('MY_CUSTOM_MESSAGE', '您的订单预计将在 3 个工作日内发货。'); - 在
checkout_process.php中使用它:$HTML .= '<p style="color: #e74c3c;">' . MY_CUSTOM_MESSAGE . '</p>'; $TEXT .= "\n" . MY_CUSTOM_MESSAGE . "\n";
- 打开你的语言文件:
第四部分:常见问题与高级技巧
邮件中显示乱码?
- 编码问题:确保你的 HTML 文件开头有正确的字符编码声明:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">。 - Zen Cart 后台设置:进入 工具 -> 商店 -> 邮件,检查“字符集”是否设置为
UTF-8。
如何添加自定义字段(如自定义发票抬头)?
这需要更深入的修改,通常涉及修改 checkout_process.php 和数据库。
- 修改 PHP 文件:在
$HTML和$TEXT中添加你的自定义字段,假设你已经通过某种方式(如插件或手动)将自定义字段值存储在$order->info['custom_invoice_title']中。$HTML .= '<br /><strong>' . '发票抬头:' . '</strong> ' . $order->info['custom_invoice_title'] . '<br />'; $TEXT .= "\n" . '发票抬头:' . $order->info['custom_invoice_title'] . "\n";
- 修改数据库:你可能需要修改
orders表结构,添加一个新的列来存储这个自定义字段。
使用邮件模板插件
如果你觉得手动修改很麻烦,可以考虑使用邮件模板插件,"Ultimate Email Styler" 或其他类似插件,这些插件通常提供一个后台界面,让你可以像编辑网页一样可视化地设计邮件模板,无需直接修改代码。
修改 Zen Cart 邮件模板的核心思路是:
- 外观修改 -> 编辑
.html文件(推荐在自定义模板中操作)。 - 内容修改 -> 编辑
.php文件(或对应的语言文件)。 - 安全第一 -> 任何操作前都先备份。
- 测试验证 -> 每次修改后都通过后台发送测试邮件来检查效果。
希望这份详细的指南能帮助你成功修改 Zen Cart 的邮件模板!
