Laravel如何发送邮件?(Mailgun和SMTP配置教程)
发布时间 - 2025-12-13 00:00:00 点击率:次Laravel发邮件需正确配置驱动(SMTP或Mailgun)并使用Mailable类,SMTP常用QQ邮箱(授权码非密码)、Mailgun需域名验证;调试关键在环境配置、加密方式、域名状态及队列监听。
在 Laravel 中发送邮件,核心是配置邮件驱动(如 SMTP 或 Mailgun),再通过 Mailable 类封装内容,最后用 Mail::send() 或 Mail::to()->send() 发出。关键不在“能不能发”,而在“配得对不对、发得稳不稳”。
SMTP 配置:用 QQ 邮箱或企业邮箱最常见
多数人首选 SMTP,因为可控性强、调试直观。以 QQ 邮箱为例(需开启 POP3/SMTP 服务并获取授权码):
- 修改 .env 文件:
MAIL_MAILER=smtp MAIL_HOST=smtp.qq.com MAIL_PORT=587 MAIL_USERNAME=your_email@qq.com MAIL_PASSWORD=your_app_password # 注意:不是登录密码,是邮箱生成的授权码 MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=your_email@qq.com MAIL_FROM_NAME="${APP_NAME}" - 运行
php artisan config:clear清除配置缓存,否则改了 .env 也不生效 - 测试是否通:终端执行
php artisan tinker,然后输入:use Illuminate\Support\Facades\Mail; Mail::raw('测试邮件内容', function ($message) { $message->to('target@example.com')->subject('Laravel SMTP 测试'); });如果没报错,邮
箱收到信,说明 SMTP 配通了
Mailgun 配置:适合批量、追踪和高可靠性场景
Mailgun 提供 API 密钥、域名验证和发送日志,适合正式项目。前提是已注册 Mailgun 账户,并完成域名验证(如 mg.yoursite.com):
- 在 .env 中填入 Mailgun 参数:
MAIL_MAILER=mailgun MAILGUN_DOMAIN=mg.yoursite.com MAILGUN_SECRET=key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MAILGUN_ENDPOINT=https://api.mailgun.net/v3
- 确保
config/mail.php中mailgun驱动配置完整(Laravel 9+ 默认已含,无需额外改) - 验证域名后,先用 Mailgun 控制台发一封测试邮件,确认 DNS 和验证状态正常,再切回 Laravel 测试
写一个可复用的 Mailable 类
别总用 Mail::raw(),结构化邮件更易维护:
- 生成类:
php artisan make:mail WelcomeEmail - 在
app/Mail/WelcomeEmail.php中定义数据和视图:public function __construct(public string $name) {} public function build() { return $this->view('emails.welcome')->with(['name' => $this->name]); } - 创建视图
resources/views/emails/welcome.blade.php,用 Blade 写 HTML 邮件模板 - 发送时调用:
Mail::to('user@example.com')->send(new WelcomeEmail('张三'));
调试与排错要点
发不出邮件?90% 是这几个地方卡住:
-
环境没切对:本地开发用
MAIL_MAILER=log先看日志是否生成(storage/logs/laravel.log),避免直接怼生产配置 -
SSL/TLS 混用:QQ 邮箱用
MAIL_PORT=587 + MAIL_ENCRYPTION=tls;若用 465 端口,则改ssl,且部分 PHP 版本需额外启用openssl扩展 - Mailgun 域名未验证或未启用:控制台里看 Domain Status 是否为 “Active”,Sending Access 是否开启
-
队列没跑:如果用了
->queue(),记得启动队列监听:php artisan queue:work
基本上就这些。配对驱动、写好 Mailable、看清错误日志,Laravel 发邮件不复杂但容易忽略细节。
# php
# word
# laravel
# html
# cad
# app
# access
# 端口
# qq
# ssl
# ai
# dns
# 邮箱
# 封装
# mail
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何保护应用免受CSRF攻击?(原理和示例)
PHP 500报错的快速解决方法
Java类加载基本过程详细介绍
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
Laravel集合Collection怎么用_Laravel集合常用函数详解
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
如何快速启动建站代理加盟业务?
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
微信推文制作网站有哪些,怎么做微信推文,急?
JS去除重复并统计数量的实现方法
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
无锡营销型网站制作公司,无锡网选车牌流程?
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Android中AutoCompleteTextView自动提示
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
javascript日期怎么处理_如何格式化输出
做企业网站制作流程,企业网站制作基本流程有哪些?
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
如何用IIS7快速搭建并优化网站站点?
Laravel如何使用Blade组件和插槽?(Component代码示例)
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
网易LOFTER官网链接 老福特网页版登录地址
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
个人摄影网站制作流程,摄影爱好者都去什么网站?
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
如何在云服务器上快速搭建个人网站?
原生JS实现图片轮播切换效果
Laravel如何实现API资源集合?(Resource Collection教程)
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何基于云服务器快速搭建网站及云盘系统?
Laravel如何自定义错误页面(404, 500)?(代码示例)
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
javascript中闭包概念与用法深入理解
Laravel怎么为数据库表字段添加索引以优化查询
JS实现鼠标移上去显示图片或微信二维码
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Laravel如何实现用户密码重置功能?(完整流程代码)
js实现获取鼠标当前的位置
零基础网站服务器架设实战:轻量应用与域名解析配置指南
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
网站页面设计需要考虑到这些问题
再谈Python中的字符串与字符编码(推荐)
javascript基本数据类型及类型检测常用方法小结
html5的keygen标签为什么废弃_替代方案说明【解答】


箱收到信,说明 SMTP 配通了