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


相关推荐: 香港服务器如何优化才能显著提升网站加载速度?  如何快速打造个性化非模板自助建站?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何快速搭建高效可靠的建站解决方案?  网站制作软件有哪些,制图软件有哪些?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Python文本处理实践_日志清洗解析【指导】  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  Python文件异常处理策略_健壮性说明【指导】  详解vue.js组件化开发实践  微信推文制作网站有哪些,怎么做微信推文,急?  Laravel API资源类怎么用_Laravel API Resource数据转换  简历没回改:利用AI润色让你的文字更专业  Laravel怎么实现模型属性的自动加密  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  Laravel怎么使用Intervention Image库处理图片上传和缩放  javascript中的try catch异常捕获机制用法分析  微信小程序 require机制详解及实例代码  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Laravel如何处理表单验证?(Requests代码示例)  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  如何实现javascript表单验证_正则表达式有哪些实用技巧  北京企业网站设计制作公司,北京铁路集团官方网站?  如何确保西部建站助手FTP传输的安全性?  非常酷的网站设计制作软件,酷培ai教育官方网站?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel怎么在Controller之外的地方验证数据  Laravel如何集成Inertia.js与Vue/React?(安装配置)  原生JS获取元素集合的子元素宽度实例  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  魔方云NAT建站如何实现端口转发?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  使用C语言编写圣诞表白程序  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel如何处理异常和错误?(Handler示例)  利用python获取某年中每个月的第一天和最后一天  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  如何彻底卸载建站之星软件?  Python进程池调度策略_任务分发说明【指导】  lovemo网页版地址 lovemo官网手机登录  如何在不使用负向后查找的情况下匹配特定条件前的换行符  大学网站设计制作软件有哪些,如何将网站制作成自己app?  微信小程序 五星评分(包括半颗星评分)实例代码  Laravel如何配置和使用缓存?(Redis代码示例)  网站建设要注意的标准 促进网站用户好感度!  Android滚轮选择时间控件使用详解  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南