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。

在控制器中发送邮件

使用 Laravel 的 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各种跨域技术】