织梦留言如何发送到邮箱?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 织梦建站 正文

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

织梦留言发送到邮箱
(图片来源网络,侵删)

准备工作

  1. FTP/SFTP工具:用于连接您的服务器,修改文件。
  2. 网站后台登录地址:用于进入织梦后台进行设置。
  3. 您的邮箱地址:用于接收邮件。

直接修改核心文件(简单直接)

这是最常见的方法,直接修改处理留言提交的PHP文件,在保存留言后添加发送邮件的逻辑。

第1步:找到并修改留言处理文件

织梦处理留言提交的核心文件是 plus/feedback.php,我们需要在这个文件中找到留言成功后,跳转页面的代码,并在那里插入发送邮件的代码。

  1. 通过FTP工具登录您的服务器,找到并下载 /plus/feedback.php 文件。
  2. 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开它。
  3. 在文件中搜索 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);
// ... 其他代码 ...
  1. 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(...): 调用发送函数。
  1. 保存修改后的 feedback.php 文件,并通过FTP上传回服务器,覆盖原文件。

第2步:在织梦后台开启SMTP邮件功能

织梦的邮件发送依赖于SMTP服务器,您需要在后台配置SMTP信息。

  1. 登录您的织梦后台。

  2. 进入 【系统】-> 【系统基本参数】-> 【核心设置】

    织梦留言发送到邮箱
    (图片来源网络,侵删)
  3. 在页面中找到以下几项并进行设置:

    • 网站发信EMAIL:填写您自己的邮箱地址(admin@yourdomain.com),这个地址将作为发件人。
    • SMTP服务器:填写您的邮箱服务商提供的SMTP地址。
      • QQ邮箱smtp.qq.com
      • 163邮箱smtp.163.com
      • Gmailsmtp.gmail.com (可能需要开启“不太安全的应用的访问权限”)
      • 企业邮箱:请咨询您的服务商。
    • SMTP服务器的用户邮箱:再次填写您的邮箱地址。
    • SMTP服务器的用户帐号:通常是您的邮箱地址,或者邮箱地址去掉之后的部分(如 qq1234567)。
    • SMTP服务器的用户密码注意,这里不是您的邮箱登录密码,而是授权码,很多邮箱(如QQ、163)为了安全,需要您在邮箱设置中开启SMTP服务并获取一个授权码。
    • SMTP端口:常用的有 25, 465 (SSL), 587 (TLS),建议使用 465 并勾选 “启用SSL发送”
  4. 点击 “保存基本参数”

第3步:测试

  1. 回到您的网站前台,打开留言板。
  2. 填写并提交一条新的留言。
  3. 稍等片刻,检查您在第2步中设置的邮箱是否收到了新邮件。

使用钩子(Hook)方法(更推荐,更安全)

直接修改核心文件在织梦升级后可能会被覆盖,使用钩子方法可以实现代码与核心分离,更加安全和易于维护。

第1步:在数据库中添加钩子记录

织梦的钩子功能依赖于 dede_sysplugin 数据表。

  1. 登录您的网站数据库管理工具(如 phpMyAdmin)。
  2. 找到您的织梦数据库,打开 dede_sysplugin 表。
  3. 点击 “插入”“添加新记录”
  4. 填写以下字段:
    • pluginnameguestbook_sendmail (可以自定义,但需唯一)
    • pluginversion0
    • pluginstate1 (1表示启用,0表示禁用)
    • adminid1 (管理员ID,默认为1)
    • addtime1735689600 (填写当前时间戳)
    • filename/include/dedeguestbook.sendmail.php (钩子文件路径,我们稍后会创建)
  5. 保存记录。

第2步:创建钩子文件

根据上一步的 filename,我们需要创建一个文件。

  1. 通过FTP工具,在您的网站根目录下的 /include/ 文件夹中,创建一个新文件,命名为 dedeguestbook.sendmail.php
  2. 在这个新文件中,粘贴以下代码:
<?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步:测试

与方法一相同,在前台提交一条留言,检查邮箱是否收到。


总结与建议

特点 方法一 (修改文件) 方法二 (钩子)
优点 简单直接,不需要理解钩子机制。 代码与核心分离,升级不会被覆盖,更安全、专业。
缺点 织梦升级后,修改的文件会被覆盖,需要重新修改。 需要操作数据库,对新手稍显复杂。
推荐度 ⭐⭐☆ (临时使用或快速实现) ⭐⭐⭐⭐⭐ (长期使用,推荐首选)

对于大多数网站,强烈推荐使用方法二(钩子方法),因为它更符合程序开发的规范,能避免未来升级带来的麻烦,如果您只是临时需要或者对数据库操作不熟悉,方法一也是一个快速有效的选择。

-- 展开阅读全文 --
头像
dede首页生成空白是什么原因?
« 上一篇 04-18
strncopy与strcpy有何区别?
下一篇 » 04-18

相关文章

取消
微信二维码
支付宝二维码

目录[+]