资讯专栏INFORMATION COLUMN

解决Moodle在上传用户时无法自动发送账号密码邮件

Bryan / 2204人阅读

摘要:问题描述由于某些原因,不能让用户进行注册,只能有运营人员手动添加用户,单个添加用户比较麻烦,因此选择使用上传文件的形式来批量生成用户,但是上传用户在不给定字段时,应该生成密码并通知用户,但是最终结果是生成用户成功了,邮件并没有发出邮件服务器

问题描述
由于某些原因,不能让用户进行注册,只能有运营人员手动添加用户,单个添加用户比较麻烦,因此选择使用上传文件的形式来批量生成用户,但是上传用户在不给定 password 字段时,应该生成密码并通知用户,但是最终结果是生成用户成功了,邮件并没有发出(邮件服务器已正确配置,除了上传用户无法发送邮件外,其它添加用户或者忘记密码等操作都可以发送邮件),进过近一个星期对 moodle 源码的研究,终于找到 问题所在并解决,特此记录,望接下来遇到此问题的伙伴能尽快解决此问题!
Moodle简介

简介来自百度百科

Moodle(Modular Object-Oriented Dynamic Learning Environment)是一个用于制作网络课程或网站的软件包。它是一个全球性的开发项目,用以支持社会建构主义(social constructionist)的教育框架。Moodle是一个自由的开源软件 (在GNU 公共许可协议下),也就是说Moodle是有版权的,但是你有额外的自由。你可以自由地复制、使用或者修改Moodle,前提条件是你同意:为他人提供代码,没有修改或删除原有的版权和许可,以及将相似的版权应用于衍生的作品。
当前工作环境

服务器:阿里云Linux服务器 Apache

moodle版本: MOODLE_33_STABLE

其它moodle所需环境包括PHPMySQL等和moodle官网安装推荐一致,服务器路径也一致

解决办法

锁定问题文件

找到moodle目录下 admin/tool/uploaduser/index.php

该文件便是上传用户时所有操作流程的文件

锁定问题所在位置

滚动到831行左右,找到如下代码:

if ($user->password === "to be generated") {
    set_user_preference("create_password", 1, $user);
}

解决问题

将以上代码替换成如下代码:

if ($user->password === "to be generated") {
    setnew_password_and_mail($user);
    unset_user_preference("create_password", $user);
    set_user_preference("auth_forcepasswordchange", 1, $user);
}

代码释义:之前的代码是只生成了密码,但是并未执行发送账号密码邮件给用户,因此替换后的代码会先执行发送账号密码邮件,在清除已设置的密码,最后设置用户登录时强制修改密码

问题总结
目前在本地和线上测试上传单个或多个用户都能正常发送邮件,目的算是达到了!
解决此问题花费了不少时间,也怪笔者对 PHP 只能算是个半吊子,还未正式开发过 PHP 项目
因此走了不少弯路,但是最后问题得到解决,甚感欣慰!
*友情提示: 更改线上环境或测试环境代码后,记得重启服务器,例如当前环境就执行:service apache2 restart

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28907.html

相关文章

  • 适用于初创公司的超轻量级smtp服务配置

    摘要:不光是用于产品向客户的通知服务更多的是用在企业内部的信息工具,比如我们就有等等非常多的开源工具,都需要配置来实现内部信息的联动。 背景 smtp 是一种常见的服务,提供了程序自动化邮件外发的可能。不光是用于产品向客户的通知服务;更多的是用在企业内部的信息工具,比如我们就有 sentry / confluence / zulip 等等非常多的开源工具,都需要配置 smtp 来实现内部信息...

    JinB 评论0 收藏0
  • 聊聊毕业设计系列 --- 系统实现

    摘要:七牛云接入本系统的图片,音视频是放在七牛云,所以需要接入七牛云。在服务端通过接口请求来获取七牛云上传,客户端获取到七牛云,通过不同方案将带上。 效果展示 showImg(https://user-gold-cdn.xitu.io/2018/8/26/16576a709bd02f5f?w=1409&h=521&f=gif&s=30128195); showImg(https://user...

    null1145 评论0 收藏0
  • 聊聊毕业设计系列 --- 系统实现

    摘要:七牛云接入本系统的图片,音视频是放在七牛云,所以需要接入七牛云。在服务端通过接口请求来获取七牛云上传,客户端获取到七牛云,通过不同方案将带上。 效果展示 showImg(https://user-gold-cdn.xitu.io/2018/8/26/16576a709bd02f5f?w=1409&h=521&f=gif&s=30128195); showImg(https://user...

    qpal 评论0 收藏0
  • Nextcloud个人云存储绝佳选择:一键自动安装方法和云盘使用体验

    搭建个人云存储一般会想到ownCloud,堪称是自建云存储服务的经典。而Nextcloud是ownCloud原开发团队打造的号称是下一代存储。初一看觉得口气不小,刚推出来就重新定义了Cloud,真正试用过后就由衷地赞同这个Nextcloud:它是个人云存储服务的绝佳选择。 与ownCloud相比,Nextcloud的功能丝毫没有减弱,甚至由于可以安装云存储服务应用,自制性更强,也更符合用户的...

    Shisui 评论0 收藏0

发表评论

0条评论

Bryan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<