下面我将为您提供详细的图文步骤说明,包括两种情况:直接修改文件和使用更安全的钩子方法。

(图片来源网络,侵删)
准备工作
- FTP/SFTP工具:用于连接您的服务器,修改文件。
- 网站后台登录地址:用于进入织梦后台进行设置。
- 您的邮箱地址:用于接收邮件。
直接修改核心文件(简单直接)
这是最常见的方法,直接修改处理留言提交的PHP文件,在保存留言后添加发送邮件的逻辑。
第1步:找到并修改留言处理文件
织梦处理留言提交的核心文件是 plus/feedback.php,我们需要在这个文件中找到留言成功后,跳转页面的代码,并在那里插入发送邮件的代码。
- 通过FTP工具登录您的服务器,找到并下载
/plus/feedback.php文件。 - 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开它。
- 在文件中搜索
ShowMsg函数,这个函数用于显示操作成功或失败的提示信息,我们需要找到ShowMsg之前的部分。
你会找到类似这样的代码结构(可能在第100行左右,具体版本可能略有不同):
// ... 其他代码 ...
// 更新留言统计
$dsql->ExecuteNoneQuery("UPDATE `dede_arctype` SET `count`=count+1 WHERE id='$typeid'");
// 显示成功信息
$msg = '发表留言成功!';
$gourl = "javascript:;";
if($dsql->ExecuteNoneQuery("UPDATE `dede_guestbook` SET `ischeck`=1 WHERE id='$id'"))
{
$msg = '发表留言成功,请等待管理员审核!';
$gourl = "guestbook.php";
}
ShowMsg($msg, $gourl, 0, 2000);
// ... 其他代码 ...
- 在
ShowMsg之前插入发送邮件的代码。
在 ShowMsg($msg, $gourl, 0, 2000); 这一行代码的前面,添加以下PHP代码:

(图片来源网络,侵删)
// ==============================================
// 新增:发送留言邮件通知
// ==============================================
$arctitle = $msg; // 可以用留言内容作为邮件标题的一部分
$emails = ''; // 收件人邮箱地址,请替换成您自己的邮箱
$fromname = '网站名称'; // 发件人名称
$toname = '管理员'; // 收件人名称
$sendbody = "您有新的网站留言!\n\n";
$sendbody .= "留言人:{$uname}\n";
$sendbody .= "联系方式:{$email}\n";
$sendbody .= "留言内容:{$msg}\n";
$sendbody .= "------------------------\n";
$sendbody .= "此邮件由系统自动发送,请勿回复。";
// 使用织梦自带的邮件发送函数
$cfg_sendmail_belong = 'Y'; // 'Y' 表示发件人地址和收件人地址一致,通常用于系统邮件
$mailtitle = '【新网站留言】来自 ' . $uname;
$mailbody = $sendbody;
if($emails != '')
{
$mailtype = 'HTML'; // 邮件格式,可以是 'TEXT' 或 'HTML'
require_once(DEDEINC.'/mail.class.php');
$smtp = new smtp();
$smtp->smtp_send($emails, $mailtitle, $mailbody, $fromname, $mailtype);
}
// ==============================================
// 新增代码结束
// ==============================================
代码解释:
$emails = '';:这是最关键的一步,请将引号内的内容替换为您想要接收邮件的邮箱地址,admin@yourdomain.com。$fromname和$toname:可以自定义发件人和收件人的显示名称。$sendbody:这里是邮件正文的内容,您可以自由增删信息,如留言时间、IP地址等。require_once(DEDEINC.'/mail.class.php');:引入了织梦自带的邮件发送类。$smtp->smtp_send(...): 调用发送函数。
- 保存修改后的
feedback.php文件,并通过FTP上传回服务器,覆盖原文件。
第2步:在织梦后台开启SMTP邮件功能
织梦的邮件发送依赖于SMTP服务器,您需要在后台配置SMTP信息。
-
登录您的织梦后台。
-
进入 【系统】-> 【系统基本参数】-> 【核心设置】。
(图片来源网络,侵删) -
在页面中找到以下几项并进行设置:
- 网站发信EMAIL:填写您自己的邮箱地址(
admin@yourdomain.com),这个地址将作为发件人。 - SMTP服务器:填写您的邮箱服务商提供的SMTP地址。
- QQ邮箱:
smtp.qq.com - 163邮箱:
smtp.163.com - Gmail:
smtp.gmail.com(可能需要开启“不太安全的应用的访问权限”) - 企业邮箱:请咨询您的服务商。
- QQ邮箱:
- SMTP服务器的用户邮箱:再次填写您的邮箱地址。
- SMTP服务器的用户帐号:通常是您的邮箱地址,或者邮箱地址去掉之后的部分(如
qq1234567)。 - SMTP服务器的用户密码:注意,这里不是您的邮箱登录密码,而是授权码,很多邮箱(如QQ、163)为了安全,需要您在邮箱设置中开启SMTP服务并获取一个授权码。
- SMTP端口:常用的有
25,465(SSL),587(TLS),建议使用465并勾选 “启用SSL发送”。
- 网站发信EMAIL:填写您自己的邮箱地址(
-
点击 “保存基本参数”。
第3步:测试
- 回到您的网站前台,打开留言板。
- 填写并提交一条新的留言。
- 稍等片刻,检查您在第2步中设置的邮箱是否收到了新邮件。
使用钩子(Hook)方法(更推荐,更安全)
直接修改核心文件在织梦升级后可能会被覆盖,使用钩子方法可以实现代码与核心分离,更加安全和易于维护。
第1步:在数据库中添加钩子记录
织梦的钩子功能依赖于 dede_sysplugin 数据表。
- 登录您的网站数据库管理工具(如 phpMyAdmin)。
- 找到您的织梦数据库,打开
dede_sysplugin表。 - 点击 “插入” 或 “添加新记录”。
- 填写以下字段:
- pluginname:
guestbook_sendmail(可以自定义,但需唯一) - pluginversion:
0 - pluginstate:
1(1表示启用,0表示禁用) - adminid:
1(管理员ID,默认为1) - addtime:
1735689600(填写当前时间戳) - filename:
/include/dedeguestbook.sendmail.php(钩子文件路径,我们稍后会创建)
- pluginname:
- 保存记录。
第2步:创建钩子文件
根据上一步的 filename,我们需要创建一个文件。
- 通过FTP工具,在您的网站根目录下的
/include/文件夹中,创建一个新文件,命名为dedeguestbook.sendmail.php。 - 在这个新文件中,粘贴以下代码:
<?php
/**
* 织梦留言板发送邮件钩子
*/
// 确保是在处理留言时才执行此钩子
if ($getenv == 'guestbook') {
// 获取提交的留言数据
$uname = $username;
$email = $email;
$msg = $msg; // $msg 在全局中已经包含了留言内容
// 配置邮件信息
$cfg_sendmail_belong = 'Y';
$emails = 'your-email@example.com'; // 【请务必替换成您的邮箱】
$fromname = '网站名称';
$toname = '管理员';
$mailtitle = '【新网站留言】来自 ' . $uname;
$sendbody = "您有新的网站留言!\n\n";
$sendbody .= "留言人:{$uname}\n";
$sendbody .= "联系方式:{$email}\n";
$sendbody .= "留言内容:{$msg}\n";
$sendbody .= "------------------------\n";
$sendbody .= "此邮件由系统自动发送,请勿回复。";
$mailtype = 'TEXT'; // 或 'HTML'
// 发送邮件
if ($emails != '') {
require_once(DEDEINC . '/mail.class.php');
$smtp = new smtp();
if ($smtp->smtp_send($emails, $mailtitle, $sendbody, $fromname, $mailtype)) {
// 发送成功,可以记录日志或什么都不做
} else {
// 发送失败,可以记录日志
// echo "邮件发送失败";
}
}
}
重要:请务必将代码中的 your-email@example.com 替换成您自己的邮箱地址。
第3步:在后台配置SMTP
这一步与方法一完全相同,请按照方法二的 第2步 操作,在织梦后台 【系统】-> 【系统基本参数】-> 【核心设置】 中正确配置SMTP服务器信息。
第4步:测试
与方法一相同,在前台提交一条留言,检查邮箱是否收到。
总结与建议
| 特点 | 方法一 (修改文件) | 方法二 (钩子) |
|---|---|---|
| 优点 | 简单直接,不需要理解钩子机制。 | 代码与核心分离,升级不会被覆盖,更安全、专业。 |
| 缺点 | 织梦升级后,修改的文件会被覆盖,需要重新修改。 | 需要操作数据库,对新手稍显复杂。 |
| 推荐度 | ⭐⭐☆ (临时使用或快速实现) | ⭐⭐⭐⭐⭐ (长期使用,推荐首选) |
对于大多数网站,强烈推荐使用方法二(钩子方法),因为它更符合程序开发的规范,能避免未来升级带来的麻烦,如果您只是临时需要或者对数据库操作不熟悉,方法一也是一个快速有效的选择。
