Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
发布时间 - 2025-12-15 00:00:00 点击率:次Laravel通过Mailable类和配置SMTP驱动实现邮件发送,1. 使用artisan命令创建Mailable类;2. 在build方法中设置主题、视图与数据;3. 编写Blade模板并传递变量;4. 在.env中配置MAIL相关参数;5. 通过Mail门面在控制器中调用send方法发送邮件,支持多收件人与抄送,流程清晰且易于调试。
在 Laravel 中发送邮件变得异常简单,得益于其强大的 Mailables 系统。你不再需要手动配置 SMTP 或拼接邮件内容,Laravel 提供了清晰、优雅的面向对象方式来构建和发送邮件。本文将带你一步步实现从创建 Mailable 类到成功发送邮件的全过程。
创建并配置 Mailable 类
Laravel 使用 Mailable 类来封装邮件逻辑。每个邮件都可以是一个独立的类,包含主题、收件人、视图模板和数据传递等信息。
使用 Artisan 命令创建一个 Mailable:
php artisan make:mail WelcomeEmail
该命令会在 app/Mail 目录下生成 WelcomeEmail.php 文件。打开它,你会看到一个空的 build 方法,这就是定义邮件内容的地方。
例如,设置邮件主题和使用的视图:
public function build()
{
return $this->subject('欢迎加入我们!')
->view('emails.welcome');
}
编写邮件视图模板
Laravel 邮件支持 Markdown 和普通 Blade 模板。这里以 Blade 为例。在 resources/views/emails 目录下创建 welcome.blade.php。
你可以通过 $message 变量访问邮件实例,也可以传递自定义数据。比如在 Mailable 中添加 with() 方法:
public function build()
{
return $this->subject('欢迎加入我们!')
->view('emails.welcome')
->with([
'name' => '张三',
'url' => 'https://example.com'
]);
}
然后在视图中使用这些变量:
你好,{{ $name }}!
感谢注册,点击 这里 开始使用。
配置邮件驱动与环境设置
Laravel 支持多种邮件驱动:smtp、sendmail、mailgun、postmark 等。最常用的是 SMTP。配置位于 .env 文件中:
MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=your@gmail.com MAIL_PASSWORD=your-app-password MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=your@gmail.com MAIL_FROM_NAME="Your App"
注意:若使用 Gmail,需开启两步验证并生成“应用专用密码”作为 MAIL_PASSWORD。
在控制器中发送邮件
使用 Larave
l 的 Mail 门面即可发送邮件。先引入 Mailable 类:
use App\Mail\WelcomeEmail;
use Illuminate\Support\Facades\Mail;
Mail::to('user@example.com')->send(new WelcomeEmail());
你也可以发送给多个收件人或抄送:
Mail::to(['a@example.com', 'b@example.com'])
->cc('manager@example.com')
->send(new WelcomeEmail());
基本上就这些。Laravel 的 Mailables 让邮件发送变得结构清晰、易于维护。只要配置好驱动、写好模板、调用 send 方法,邮件就能顺利发出。不复杂但容易忽略细节,比如环境变量拼写或视图路径错误,调试时可借助 Laravel Log 或使用 log 驱动测试流程。
# php
# word
# laravel
# markdown
# cad
# app
# ai
# 环境变量
# 面向对象
# 封装
# mail
# 对象
# 发送邮件
# 欢迎加入
# 邮件发送
# 的是
# 是一个
# 器中
# 目录下
# 你可以
# 就能
# 多个
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速搭建安全的FTP站点?
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
phpredis提高消息队列的实时性方法(推荐)
如何用已有域名快速搭建网站?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
如何在阿里云虚拟主机上快速搭建个人网站?
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
EditPlus中的正则表达式 实战(4)
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel如何使用.env文件管理环境变量?(最佳实践)
晋江文学城电脑版官网 晋江文学城网页版直接进入
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
怎么用AI帮你为初创公司进行市场定位分析?
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
使用spring连接及操作mongodb3.0实例
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Laravel如何集成Inertia.js与Vue/React?(安装配置)
JS碰撞运动实现方法详解
JavaScript Ajax实现异步通信
Laravel如何创建自定义Facades?(详细步骤)
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
如何在景安服务器上快速搭建个人网站?
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
Laravel如何使用Livewire构建动态组件?(入门代码)
如何快速选择适合个人网站的云服务器配置?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
微信小程序 require机制详解及实例代码
如何在云指建站中生成FTP站点?
如何快速生成凡客建站的专业级图册?
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
Laravel如何处理异常和错误?(Handler示例)
微信小程序 五星评分(包括半颗星评分)实例代码
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
中山网站推广排名,中山信息港登录入口?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】

