首页 > php框架 > Laravel > 正文

Laravel如何发送邮件?(Mailgun和SMTP配置教程)

冰火之心
发布: 2025-12-13 16:05:02
原创
366人浏览过
Laravel发邮件需正确配置驱动(SMTP或Mailgun)并使用Mailable类,SMTP常用QQ邮箱(授权码非密码)、Mailgun需域名验证;调试关键在环境配置、加密方式、域名状态及队列监听。

laravel如何发送邮件?(mailgun和smtp配置教程)

在 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(),结构化邮件更易维护:

刺鸟创客
刺鸟创客

一款专业高效稳定的AI内容创作平台

刺鸟创客 110
查看详情 刺鸟创客
  • 生成类: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 发邮件不复杂但容易忽略细节。

以上就是Laravel如何发送邮件?(Mailgun和SMTP配置教程)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号