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

如何在OctoberCMS中发送邮件?表单提交后发邮件报错求助

OctoberCMS 邮件发送教程及常见问题修复

一、如何用OctoberCMS发送邮件?

其实步骤很清晰,分三步就能搞定:

  • 第一步:配置邮件服务
    先登录后台,找到「系统设置」→「邮件设置」,在这里配置你的SMTP信息(比如用Gmail、阿里云邮或者其他服务商),记得填好发件人邮箱、密码/授权码,配置完可以点「发送测试邮件」验证是否能正常发送。
  • 第二步:创建邮件模板
    后台导航里找「邮件」→「邮件模板」,点击新建模板。设置好模板标识(比如你用的contact::form,这个标识要记准,后面代码里要用到),然后填写邮件主题和内容,内容里可以用Twig变量,比如{{ name }}、{{ email }}来接收你传递的数据。
  • 第三步:代码里调用发送
    用OctoberCMS自带的Mail门面来发送,常用的方法是sendTo(),参数分别是收件人、模板标识、要传递的数据数组。

二、修复你的「MailSettings not found」错误

看你的代码,问题出在这一行:

$to = System\Models\MailSettings::get('abc@gmail.com');

这里有两个明显的问题:

  1. 类名写错了:OctoberCMS里系统邮件设置的模型类是System\Models\MailSetting(单数的Setting,不是复数Settings),所以你写的复数类名肯定找不到。
  2. 用法错误:get()方法是用来获取邮件设置里的配置项的,比如获取默认发件人邮箱是MailSetting::get('sender_email'),你直接把收件人邮箱abc@gmail.com传进去是完全没必要的,直接赋值就行。

给你两种修正方案:

方案1:直接指定收件人(最直接)

如果你的收件人就是固定的abc@gmail.com,根本不需要调用邮件设置模型,直接写:

// $data包含name和email字段
$to = 'abc@gmail.com';
Mail::sendTo($to, 'contact::form', $data);
return true;

方案2:从系统设置里获取收件人(如果需要动态读取)

如果你想从后台邮件设置里读取收件人(比如设置了一个自定义的联系邮箱配置项),那先确保引入正确的类,再调用:

// 先在文件顶部引入正确的模型类
use System\Models\MailSetting;

// $data包含name和email字段
// 这里的'contact_recipient'是你在邮件设置里添加的自定义配置键,替换成你实际的键名
$to = MailSetting::get('contact_recipient');
Mail::sendTo($to, 'contact::form', $data);
return true;

另外再给你提几个注意点:

  • 确保你的代码文件顶部已经引入了use Mail;(如果是在组件里写的,OctoberCMS通常会自动加载,但自定义类里需要手动加)。
  • 检查你的邮件模板标识contact::form是否正确:如果这个模板是属于contact插件的,要确保这个插件已经安装启用;如果是系统模板,标识应该是类似contact-form这种不带插件前缀的。
  • 测试前先在后台邮件设置里发个测试邮件,确认SMTP配置没问题,不然就算代码对了也发不出去。

内容的提问来源于stack exchange,提问作者rameez.hashmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:50:16