You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mahara管理员手动添加用户、分享权限时邮件发送失败问题

Mahara 特定场景邮件发送异常解决方案

你遇到的管理员手动新增用户欢迎信、作品集授权通知发送失败,但注册、密码重置邮件正常的问题,是这两类触发的邮件走Mahara的异步活动队列机制,由cron任务通过PHP CLI模式执行发送,和实时触发的注册、重置密码发信逻辑完全分离,常见原因及解决步骤如下:

根因定位

两类失败邮件的发送逻辑均走cron调度的异步队列,报错栈中activity_process_queue的调用路径也验证了这一点,和实时发信的配置加载、执行环境、发件人规则都存在差异,不是全局SMTP配置错误。

排查解决步骤

    1. 检查配置文件的加载条件
      打开/var/www/mahara/web/config.php,核对$cfg->smtpuser、$cfg->smtppass、$cfg->smtpserver等SMTP相关配置,是否被包裹在仅Web请求生效的条件判断中(比如if(isset($_SERVER['HTTP_HOST']))、if(php_sapi_name() != 'cli')这类判断),如果有则将SMTP配置移到全局生效位置,不要加Web环境限制。
    1. 验证CLI模式下的SMTP配置有效性
      到Mahara站点根目录执行CLI模式发信测试,确认命令行环境可以正常读取SMTP配置:
    cd /var/www/mahara/web
    php -r "require 'init.php'; print_r(['smtpuser'=>$cfg->smtpuser,'smtphost'=>$cfg->smtpserver]);"
    

    如果输出的SMTP配置为空或者和Web端配置不一致,修复CLI模式的配置加载逻辑。

    1. 清空历史残留队列任务
      如果之前调整过SMTP配置,旧的队列任务可能仍携带失效的SMTP信息,备份后清空活动队列再测试:
    -- 备份队列表
    CREATE TABLE activity_queue_bak AS SELECT * FROM activity_queue;
    -- 清空待发送任务
    TRUNCATE TABLE activity_queue;
    

    清空后重新测试手动新增用户、授予作品集权限的场景,验证是否恢复正常。

    1. 统一发件人地址规则
      部分SMTP服务商要求发件人地址必须和认证账号完全一致,检查站点配置:
      进入后台→站点配置→站点设置,确认「站点发件邮箱」和SMTP认证的邮箱地址完全一致,同时关闭「管理员手动新增用户时使用管理员邮箱作为发件人」的选项,所有通知统一使用站点邮箱发送即可。

内容的提问来源于stack exchange,提问作者TDzevad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:54:03