这个功能非常实用,可以让网站管理员第一时间收到用户的留言通知,以便及时回复。

实现这个功能主要有两种方法:
- 使用DedeCMS自带功能(最简单、推荐):利用系统自带的“邮件发送”功能,在用户提交留言后自动触发。
- 使用第三方插件/模块(更灵活):如果自带功能不满足需求,可以寻找专门的插件。
使用DedeCMS自带功能(核心方法)
这个方法的核心是修改DedeCMS的留言板处理文件 guestbook.php,在保存留言数据后,增加一封邮件发送的逻辑。
操作步骤:
第一步:开启并配置邮件发送功能
在修改代码之前,请确保你的网站服务器支持 mail() 函数或者已经正确配置了SMTP邮件发送,你需要在DedeCMS后台进行设置。

- 登录你的DedeCMS后台。
- 进入 【系统】 -> 【系统基本参数】 -> 【核心设置】。
- 找到以下几项并进行配置:
- 网站发信EMAIL:填写你用来发送通知邮件的邮箱地址,
admin@yourdomain.com。 - SMTP服务器:如果你的邮箱需要SMTP发送(如QQ邮箱、163邮箱等),请填写SMTP服务器地址,
smtp.qq.com。 - SMTP服务器的端口:通常是
465(SSL) 或25。 - SMTP用户名:填写你的完整邮箱地址,
admin@yourdomain.com。 - SMTP密码:注意,这里通常不是你的邮箱登录密码,而是邮箱的 “授权码”(Authorization Code),你需要在你的邮箱设置(如QQ邮箱的“账户”页面)中开启SMTP服务并获取授权码。
- 是否启用SMTP发送:选择“是”。
- 网站发信EMAIL:填写你用来发送通知邮件的邮箱地址,
第二步:修改 guestbook.php 文件
这是实现功能的关键一步。
-
使用FTP或文件管理器,找到你的网站根目录下的
/plus/guestbook.php文件。 -
下载该文件到本地,用代码编辑器(如VS Code, Sublime Text, Dreamweaver)打开它。
(图片来源网络,侵删) -
找到保存留言数据的代码段,通常在文件末尾,类似这样的结构:
// ... 其他代码 ... if($dopost == 'send') { // ... 这里是处理和验证留言数据的代码 ... // 保存留言到数据库 $arc->SendGuestbook($msg, $username, $email, $homepage, $ip, $dtime, $typeid, $face, $ischeck); // ... 这里可能会有一个跳转提示 ... ShowMsg('发布成功!', 'guestbook.php'); exit(); } -
在
SendGuestbook()函数执行成功后,邮件发送的代码,最佳位置是在ShowMsg()之前,添加如下代码:// 在 SendGuestbook() 之后,ShowMsg() 之前添加 // ============================================= // 开始:发送留言通知邮件 $mailtitle = '你的网站有新的留言!'; // 邮件标题 $mailbody = "你有新的留言,请尽快查看!\n\n"; $mailbody .= "留言人:".$username."\n"; $mailbody .= "联系邮箱:".$email."\n"; $mailbody .= "留言内容:\n".$msg."\n\n"; $mailbody .= "请登录后台查看并回复:". $cfg_basehost; // $cfg_basehost 是网站首页地址 // 收件人邮箱地址,填写你想要接收通知的管理员邮箱 $mailto = 'your-email@example.com'; // 调用DedeCMS自带的邮件发送函数 if($mail->SendMail($mailto, $mailtitle, $mailbody)) { // 发送成功,可以记录日志或什么都不做 // echo '邮件发送成功'; } else { // 发送失败,可以记录日志或什么都不做 // echo '邮件发送失败'; } // 结束:发送留言通知邮件 // ============================================= -
保存并上传 修改后的
guestbook.php文件到你的服务器,覆盖原文件。
第三步:测试功能
- 清理一下网站的缓存(后台有清理缓存功能)。
- 前台打开你的留言板页面,填写一条测试留言并提交。
- 检查你配置的收件邮箱(
your-email@example.com),是否收到了新留言的通知邮件。
如果收到了,恭喜你,功能已经成功实现!
使用第三方插件/模块
如果你不想修改代码,或者需要更复杂的功能(如邮件模板自定义、HTML格式邮件等),可以考虑使用第三方插件。
-
寻找插件:
- 访问DedeCMS的官方论坛、插件市场或一些知名的DedeCMS资源网站。
- 在搜索框中输入关键词,如 “留言邮件通知”、“guestbook email”、“织梦邮件插件” 等。
- 注意选择评价好、与你的DedeCMS版本兼容的插件。
-
安装插件:
- 下载插件包,通常包含一个安装说明文件(
readme.txt)和安装文件。 - 按照说明文件进行操作,通常是上传文件到指定目录,然后在后台执行安装脚本或启用模块。
- 下载插件包,通常包含一个安装说明文件(
-
配置插件:
- 进入后台的插件管理界面,找到你刚安装的邮件通知插件。
- 按照提示配置收件人邮箱、邮件标题、邮件模板等信息。
-
测试:与方法一类似,提交一条测试留言,检查邮箱是否收到通知。
常见问题与注意事项 (FAQ)
Q1: 为什么我按照方法一做了,但收不到邮件?
A1: 这是最常见的问题,排查顺序如下:
- SMTP配置错误:再次检查后台的 SMTP服务器、端口、用户名、密码(授权码) 是否完全正确,特别是密码,一定要用授权码。
- PHP环境问题:确认你的服务器是否支持邮件发送,可以联系你的主机商确认,如果使用虚拟主机,很多主机商为了安全默认关闭了
mail()函数,强制使用SMTP。 - 邮箱垃圾箱:检查你配置的收件邮箱的垃圾邮件/广告邮件箱,有时通知邮件会被误判。
- 代码语法错误:检查
guestbook.php文件中添加的代码是否有拼写错误或语法问题,一个分号或引号错误都可能导致整个PHP脚本无法执行。 - DedeCMS文件权限:确保
guestbook.php文件有写入权限(通常是 644)。
Q2: 我想用HTML格式的邮件,可以吗?
A2: 可以,修改方法一中的 $mailbody 变量,将其改为HTML格式。
$mailbody = " <html> <head>新留言通知</title> </head> <body> <h3>你的网站有新的留言!</h3> <p><strong>留言人:</strong>".$username."</p> <p><strong>联系邮箱:</strong>".$email."</p> <p><strong>留言内容:</strong></p> <p>".$msg."</p> <p><a href='".$cfg_basehost."'>请登录后台查看并回复</a></p> </body> </html> "; // 并且在调用 SendMail 函数前,设置邮件格式为HTML $mail->IsHTML(true);
Q3: 这个功能对用户提交的留言有审核机制有影响吗?
A3: 没有影响,在方法一的代码示例中,邮件发送是在 SendGuestbook() 之后。SendGuestbook() 函数本身会根据系统设置(后台-系统基本参数-互动设置-游客需要审核)来判断是直接发布还是存入待审核队列,无论是否需要审核,邮件都会在用户提交后立即发送,提醒管理员有新的待处理内容。
希望这份详细的教程能帮助你成功实现DedeCMS留言转发邮箱的功能!
