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 】 【 网络技术251811 】 【 AI营销90571


相关推荐: 网站建设保证美观性,需要考虑的几点问题!  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在企业微信快速生成手机电脑官网?  常州企业网站制作公司,全国继续教育网怎么登录?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  如何确认建站备案号应放置的具体位置?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何在Ubuntu系统下快速搭建WordPress个人网站?  在线制作视频网站免费,都有哪些好的动漫网站?  如何在橙子建站上传落地页?操作指南详解  Thinkphp 中 distinct 的用法解析  Laravel怎么在Blade中安全地输出原始HTML内容  javascript如何操作浏览器历史记录_怎样实现无刷新导航  中国移动官方网站首页入口 中国移动官网网页登录  网站优化排名时,需要考虑哪些问题呢?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  如何在阿里云ECS服务器部署织梦CMS网站?  Linux系统命令中screen命令详解  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  如何在云主机上快速搭建网站?  详解jQuery中基本的动画方法  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Laravel如何实现多对多模型关联?(Eloquent教程)  利用python获取某年中每个月的第一天和最后一天  PHP 500报错的快速解决方法  如何在腾讯云免费申请建站?  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  JS实现鼠标移上去显示图片或微信二维码  Android使用GridView实现日历的简单功能  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  如何登录建站主机?访问步骤全解析  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  JS中对数组元素进行增删改移的方法总结  如何在橙子建站中快速调整背景颜色?  linux top下的 minerd 木马清除方法  如何快速搭建自助建站会员专属系统?  香港服务器WordPress建站指南:SEO优化与高效部署策略  Mybatis 中的insertOrUpdate操作  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Laravel如何使用withoutEvents方法临时禁用模型事件  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明