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.phpmailgun 驱动配置完整(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


相关推荐: 香港服务器如何优化才能显著提升网站加载速度?  如何自定义建站之星模板颜色并下载新样式?  如何在云服务器上快速搭建个人网站?  Android自定义控件实现温度旋转按钮效果  WordPress 子目录安装中正确处理脚本路径的完整指南  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Laravel怎么为数据库表字段添加索引以优化查询  Laravel如何创建自定义Facades?(详细步骤)  如何快速配置高效服务器建站软件?  微信小程序 HTTPS报错整理常见问题及解决方案  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  大同网页,大同瑞慈医院官网?  香港服务器选型指南:免备案配置与高效建站方案解析  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  如何快速搭建自助建站会员专属系统?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  如何获取免费开源的自助建站系统源码?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  Laravel集合Collection怎么用_Laravel集合常用函数详解  如何确保西部建站助手FTP传输的安全性?  Linux系统命令中screen命令详解  七夕网站制作视频,七夕大促活动怎么报名?  使用C语言编写圣诞表白程序  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  新三国志曹操传主线渭水交兵攻略  Firefox Developer Edition开发者版本入口  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何用PHP快速搭建高效网站?分步指南  如何在万网自助建站中设置域名及备案?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  如何在阿里云服务器自主搭建网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel如何使用Sanctum进行API认证?(SPA实战)  Python自动化办公教程_ExcelWordPDF批量处理案例  韩国服务器如何优化跨境访问实现高效连接?  北京专业网站制作设计师招聘,北京白云观官方网站?  公司门户网站制作流程,华为官网怎么做?  清除minerd进程的简单方法  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  Laravel如何记录自定义日志?(Log频道配置)  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  长沙做网站要多少钱,长沙国安网络怎么样?  如何快速生成橙子建站落地页链接?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  如何挑选高效建站主机与优质域名?  无锡营销型网站制作公司,无锡网选车牌流程?