- 【推荐】使用插件/模块(最简单、最安全):这是最简单的方法,不需要修改核心代码,更新织梦时也不会丢失功能。
- 【手动修改】修改核心文件(灵活但需谨慎):适合不想安装插件,且有一定代码基础的用户。
使用插件/模块(推荐)
这是最推荐的方式,因为安全、方便且易于维护,织梦的官方市场或第三方开发者社区有很多这样的表单邮件发送插件。
操作步骤:
-
寻找插件:
- 访问织梦官方市场、Dede58、织梦吧等知名的织梦资源网站。
- 在搜索框中输入关键词,如:“表单邮件”、“表单提交发邮件”、“自定义表单邮件” 等。
- 选择一个评价好、下载量高、且与您织梦版本兼容的插件。
-
下载并安装:
- 下载插件包,通常是
.zip格式。 - 登录您的网站后台,进入“模块” -> “上传新模块”。
- 上传并安装您下载的插件包。
- 下载插件包,通常是
-
配置插件:
- 安装成功后,在后台的“模块”列表中找到您刚安装的插件,点击“设置”或进入其管理界面。
- 根据插件的说明,进行配置,通常包括:
- 选择表单:指定要发送邮件的自定义表单。
- 收件人邮箱:填写您希望接收邮件的邮箱地址,可以填多个,用逗号隔开。
- 邮件主题:设置接收到的邮件标题。
- 模板:这是最重要的部分,您可以使用变量来获取表单提交的数据,如果您的表单字段名为
name和tel,模板中可能使用[name]、[tel]这样的占位符,插件会自动将这些占位符替换为用户实际提交的内容。 - SMTP服务器配置:如果您的网站服务器不支持PHP自带的
mail()函数(很多虚拟主机默认禁用),您需要配置SMTP信息,这包括:- SMTP服务器地址(如
smtp.qq.com) - SMTP端口号(如 465 或 587)
- 发件人邮箱
- 发件人邮箱授权码(注意:不是邮箱密码,QQ邮箱等需要开启SMTP服务并获取授权码)
- SMTP服务器地址(如
-
测试:
- 保存配置后,在前台页面填写您配置的表单并提交。
- 检查您配置的收件人邮箱,是否收到了邮件,以及邮件内容和格式是否正确。
优点:
- 安全:不修改织梦核心文件,升级织梦时功能不会丢失。
- 简单:图形化界面配置,无需写代码。
- 功能强大:很多插件支持富文本邮件、附件、多收件人等高级功能。
手动修改核心文件(灵活但需谨慎)
如果您不想安装插件,或者找不到合适的插件,可以采用手动修改代码的方式。此方法风险较高,请务必提前备份网站文件和数据库!
我们将以织梦V5.7版本为例,修改 plus/diy.php 文件,这是处理自定义表单提交的核心文件。
第一步:创建自定义表单
- 在织梦后台,进入“核心” -> “内容模型管理” -> “自定义表单”。
- 点击“增加一个自定义表单”,填写表单名称(如“在线留言”)。
- 在“字段管理”中,添加您需要的字段,
name(文本字段,姓名)tel(文本字段,电话)content(多行文本,留言内容)
- 生成表单代码,并复制到您的前台页面中。
第二步:修改 plus/diy.php 文件
- 通过FTP或主机文件管理器,找到并下载
/plus/diy.php文件。 - 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开该文件。
- 找到文件末尾的
//diy.php代码段,通常在if($dsql->Execute('add')){ ... }这个条件判断语句内。
找到类似这样的代码块:
if($dsql->Execute('add'))
{
//成功提示
$goto = "diy.php?action=list&diyid={$diy->diyid}";
$bkmsg = '发布成功,正在返回...';
ShowMsg($bkmsg, $goto);
}
在这段代码的 if 语句内部(//成功提示 注释的上方),插入发送邮件的PHP代码。
第三步:编写邮件发送代码
以下是插入邮件发送代码的完整示例,请根据您的实际情况修改邮箱地址和SMTP信息。
if($dsql->Execute('add'))
{
//=====================【开始添加邮件发送代码】=====================
// 1. 引入邮件发送类文件
// 织梦自带的邮件类文件路径
require_once(DEDEINC.'/mail.class.php');
// 2. 获取表单提交的数据
// 注意:这里的字段名(如 name, tel, content)必须和您在后台自定义表单中设置的“字段名”完全一致
$name = $_POST['name'];
$tel = $_POST['tel'];
$content = $_POST['content'];
// 3. 设置收件人邮箱
$mailto = 'your-email@example.com, another-email@example.com'; // 替换成您要接收邮件的邮箱,多个用逗号隔开
// 4. 设置邮件主题
$subject = '【网站新留言】来自 ' . $name . ' 的留言';
// 5. 设置邮件内容(HTML格式)
$mailbody = '<h3>网站收到了一条新的留言信息</h3>';
$mailbody .= '<p><strong>姓名:</strong>' . $name . '</p>';
$mailbody .= '<p><strong>电话:</strong>' . $tel . '</p>';
$mailbody .= '<p><strong>留言内容:</strong></p>';
$mailbody .= '<p>' . nl2br($content) . '</p>'; // nl2br函数将换行符转换为HTML的<br>标签
// 6. 设置发件人信息(显示在邮件“发件人”一栏)
$email_from = 'noreply@yourdomain.com'; // 替换成您的网站邮箱
$email_name = '网站在线留言系统'; // 发件人名称
// 7. 创建邮件对象并发送
$mailtype = 'HTML'; // 邮件格式为HTML
$mail = new smtp();
// 如果您的服务器需要SMTP认证,请取消下面的注释并填写正确的信息
/*
$mail->smtp_host = 'smtp.qq.com'; // SMTP服务器
$mail->smtp_port = 465; // SMTP端口
$mail->smtp_user = 'your-email@qq.com'; // SMTP用户名
$mail->smtp_pass = 'your-smtp-password'; // SMTP密码(对于QQ邮箱等,是授权码)
*/
$mail->debug = false; // 是否开启调试模式,true会输出详细信息
$send_result = $mail->smtp_send($mailto, $subject, $mailbody, $email_from, $email_name, $mailtype);
// (可选) 根据邮件发送结果给用户不同的提示
// if($send_result){
// $bkmsg .= ',邮件已成功发送!';
// } else {
// $bkmsg .= ',但邮件发送失败!';
// }
//=====================【结束添加邮件发送代码】=====================
//成功提示
$goto = "diy.php?action=list&diyid={$diy->diyid}";
$bkmsg = '发布成功,正在返回...';
ShowMsg($bkmsg, $goto);
}
代码解释和注意事项:
require_once(DEDEINC.'/mail.class.php');:引入织梦自带的邮件处理类。$_POST['字段名']:务必确保这里的“字段名”和您在后台创建自定义表单时填写的“字段名称”完全一致,区分大小写。$mailto:填写您要接收邮件的邮箱地址。- SMTP认证:大多数虚拟主机或云服务器都禁用了PHP的
mail()函数,因为它容易被滥用,您几乎肯定需要使用SMTP方式发送邮件。- 取消注释SMTP配置部分。
smtp_host: 您的邮箱服务商提供的SMTP服务器地址(如smtp.qq.com,smtp.163.com)。smtp_port: 端口,SSL加密通常是465,TLS加密通常是587。smtp_user: 您的完整邮箱地址。smtp_pass: 不是您的登录密码,而是邮箱的“授权码”或“专用密码”,您需要登录您的邮箱(如QQ邮箱、163邮箱)的设置中,开启SMTP服务并获取这个授权码。
$mail->debug = false;:开发时可以设为true,查看详细的错误信息,方便调试,上线后务必设为false。- 备份:在修改
plus/diy.php之前,请务必备份原始文件!
| 方法 | 优点 | 缺点 | 推荐人群 |
|---|---|---|---|
| 插件/模块 | 简单、安全、易于维护、功能丰富 | 可能需要寻找或购买插件 | 所有用户,尤其是新手和不希望修改核心代码的用户 |
| 手动修改 | 灵活、无需额外安装、可完全自定义代码 | 风险高(织梦升级会失效)、需要PHP知识、调试复杂 | 有一定代码基础、追求极致定制化、且能承担升级后需要重新修改风险的用户 |
对于绝大多数用户来说,使用方法一(插件)是最佳选择,它能以最小的风险和精力,实现您需要的功能。
