dede会员注册成功如何自动发送邮件提醒?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 DEDE建站 正文

直接修改 member/reg_new.php 文件(核心文件修改法)

这是最直接的方法,但缺点是下次升级 DedeCMS 时,这些修改可能会被覆盖。

dede 会员注册成功发送邮件提醒
(图片来源网络,侵删)

操作步骤:

  1. 准备工作

    • 确认你的网站已开启并配置好邮件发送功能,在 DedeCMS 后台,进入【系统】-> 【系统基本参数】-> 【核心设置】,检查并配置以下几项:

      • cfg_smtp_server: SMTP 服务器地址 ( smtp.qq.com)
      • cfg_smtp_port: SMTP 服务器端口 ( 465587)
      • cfg_smtp_user: SMTP 发件箱用户名 (通常是完整的邮箱地址)
      • cfg_smtp_pass: SMTP 发件箱授权码 (注意:很多邮箱服务商(如QQ, 163)需要使用“授权码”而不是登录密码)
      • cfg_webname: 你的网站名称 (会作为发件人名称)
      • cfg_adminemail: 管理员邮箱 (将接收新会员注册的提醒邮件)
    • 备份文件:备份 /member/reg_new.php 文件。

  2. 编辑 reg_new.php 文件

    dede 会员注册成功发送邮件提醒
    (图片来源网络,侵删)
    • 使用 FTP 或其他文件管理工具,打开 /member/reg_new.php 文件。
    • 找到用户信息成功插入数据库的位置,通常在文件的末尾附近,你能看到类似 ShowMsg('注册成功!', ...); 的代码。
  3. 添加发送邮件的代码

    • ShowMsg('注册成功!', ...); 这行代码之前,插入以下 PHP 代码。
    // =====================================================
    // 新会员注册成功后,发送邮件提醒管理员
    // =====================================================
    $member_name = $username; // 新注册的用户名
    $member_email = $email;   // 新注册的邮箱
    $reg_time = date("Y-m-d H:i:s"); // 注册时间
    // 邮件主题
    $subject = "【".$cfg_webname."】有新会员注册提醒";
    // 邮件正文
    $message = "网站有新会员注册,详细信息如下:\n\n";
    $message .= "网站名称:".$cfg_webname."\n";
    $message .= "新会员用户名:".$member_name."\n";
    $message .= "新会员邮箱:".$member_email."\n";
    $message .= "注册时间:".$reg_time."\n\n";
    $message .= "请及时登录后台进行审核和管理,\n";
    $message .= "-- \n";
    $message .= $cfg_webname." 管理系统";
    // 发送邮件
    // @符号是为了屏蔽函数可能产生的警告信息,你可以先去掉@调试
    if(@mail($cfg_adminemail, $subject, $message, "From:".$cfg_smtp_user."\r\nReply-To:".$cfg_smtp_user)){
        // 邮件发送成功,可以在这里记录日志(可选)
        // insert_log('admin', '新会员注册提醒邮件发送成功: '.$member_name);
    } else {
        // 邮件发送失败,可以在这里记录日志(可选)
        // insert_log('admin', '新会员注册提醒邮件发送失败: '.$member_name);
    }
    // =====================================================
  4. 保存并测试

    • 保存修改后的 reg_new.php 文件。
    • 清除浏览器缓存和 DedeCMS 的数据缓存(后台有清除缓存选项)。
    • 前台使用一个新邮箱进行注册,注册成功后,检查你之前配置的管理员邮箱是否收到了提醒邮件。

使用DedeCMS的钩子机制(推荐,更安全)

这种方法不修改核心文件,而是通过 DedeCMS 的 plus 目录创建一个插件来触发邮件发送,这是更规范的二次开发方式,升级时不会被覆盖。

操作步骤:

  1. 准备工作

    dede 会员注册成功发送邮件提醒
    (图片来源网络,侵删)
    • 同方法一,确保网站邮件功能已正确配置
    • 备份文件:备份 /member/reg_new.php 文件。
  2. 创建触发文件

    • 在 DedeCMS 根目录下创建一个名为 plus 的文件夹(如果不存在的话)。
    • plus 文件夹内,创建一个新文件,send_admin_mail.php
  3. 编写 send_admin_mail.php 的内容

    • 将以下代码复制到 send_admin_mail.php 文件中并保存。
    <?php
    /**
     * 新会员注册成功后,发送邮件提醒管理员
     * 此文件由 member/reg_new.php 调用
     */
    // 引入全局配置
    require_once(dirname(__FILE__)."/../include/config_global.php");
    require_once(DEDEINC."/dedemail.class.php");
    // 接收传递过来的参数
    $member_name = isset($username) ? trim($username) : '';
    $member_email = isset($email) ? trim($email) : '';
    // 参数校验
    if (empty($member_name) || empty($member_email)) {
        exit('参数错误');
    }
    // 获取配置
    $cfg_webname = $cfg_webname;
    $cfg_adminemail = $cfg_adminemail;
    // 邮件主题
    $subject = "【".$cfg_webname."】有新会员注册提醒";
    // 邮件正文
    $message = "网站有新会员注册,详细信息如下:\n\n";
    $message .= "网站名称:".$cfg_webname."\n";
    $message .= "新会员用户名:".$member_name."\n";
    $message .= "新会员邮箱:".$member_email."\n";
    $message .= "注册时间:".date("Y-m-d H:i:s")."\n\n";
    $message .= "请及时登录后台进行审核和管理,\n";
    $message .= "-- \n";
    $message .= $cfg_webname." 管理系统";
    // 使用DedeCMS自带的邮件类发送,更稳定
    $dm = new DedeMailer();
    $dm->IsHTML(false); // 设置为纯文本邮件
    $dm->ClearAddresses(); // 清除地址列表
    $dm->AddAddress($cfg_adminemail, "管理员");
    $dm->FromName = $cfg_webname;
    $dm->From = $cfg_smtp_user;
    $dm->Subject = $subject;
    $dm->Body = $message;
    if ($dm->Send()) {
        // 发送成功,可以记录日志
        // $msg = "新会员注册提醒邮件发送成功: {$member_name}";
        // insert_log('admin', $msg);
    } else {
        // 发送失败,可以记录日志
        // $msg = "新会员注册提醒邮件发送失败: {$member_name}";
        // insert_log('admin', $msg);
    }
    $dm->SmtpClose();
    ?>
  4. 修改 member/reg_new.php 文件

    • 打开 /member/reg_new.php 文件。
    • 找到 ShowMsg('注册成功!', ...); 这行代码。
    • 在这行代码之前,添加以下一行代码来调用我们刚刚创建的脚本:
    // 调用外部脚本发送管理员提醒邮件
    require_once(dirname(__FILE__)."/../plus/send_admin_mail.php");
    // 注意:如果plus目录和member目录在同一级,路径是 "../plus/send_admin_mail.php"
    // 如果你的网站结构不同,请根据实际情况调整路径
  5. 保存并测试

    • 保存修改后的 reg_new.php 文件。
    • 清除缓存。
    • 前台使用一个新邮箱进行注册,检查管理员邮箱是否收到提醒邮件。

故障排查

如果邮件没有发送成功,请按以下步骤排查:

  1. 检查垃圾邮件箱:很多邮件系统会把这类提醒邮件误判为垃圾邮件。
  2. 检查邮件服务器配置:再次确认后台【系统基本参数】中的 SMTP 配置是否正确,特别是 cfg_smtp_pass 是否为授权码
  3. 测试邮件发送:在后台【系统】-> [系统基本参数] -> [核心设置] 底部,有一个“测试邮件发送”功能,可以快速测试你的邮件配置是否正确。
  4. 检查服务器环境:确认你的服务器是否支持 mail() 函数或 SMTP 协议,虚拟主机通常都支持,但部分VPS或云服务器可能需要额外配置。
  5. 查看错误日志:在方法一的代码中,我已经加入了注释掉的 insert_log 函数,你可以取消注释,将发送邮件的成功或失败信息记录到 DedeCMS 的后台日志中,方便排查问题,日志路径通常是 /data/adminlog/

希望这个详细的教程能帮助你解决问题!

-- 展开阅读全文 --
头像
long long int范围是多少?如何正确使用?
« 上一篇 前天
dede list如何调用附加表字段?
下一篇 » 前天

相关文章

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

目录[+]