我是靠谱客的博主 愤怒酸奶,最近开发中收集的这篇文章主要介绍Moodle框架添加用户发送邮件不成功解决办法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述

由于某些原因,不能让用户进行注册,只能有运营人员手动添加用户,单个添加用户比较麻烦,因此选择使用上传文件的形式来批量生成用户,但是上传用户在不给定 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

最后

以上就是愤怒酸奶为你收集整理的Moodle框架添加用户发送邮件不成功解决办法的全部内容,希望文章能够帮你解决Moodle框架添加用户发送邮件不成功解决办法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部