配置 QQ 邮箱 SMTP 服务来发送邮件

阅读:15 2025-04-02

1. 获取 QQ 邮箱的 SMTP 服务授权码

要通过 QQ 邮箱发送邮件,我们需要使用 SMTP 服务。QQ 邮箱要求使用 授权码(而非直接使用账号密码)来进行第三方服务的身份验证。

步骤:

  1. 登录 QQ 邮箱:访问 https://mail.qq.com 登录。

  2. 进入设置:点击右上角的设置图标,进入邮箱设置页面。

  3. 开启 SMTP 服务

    • 在设置页面选择 账户

    • 找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务

    • 启用 SMTP 服务

  4. 获取授权码:开启后,生成一个 授权码。此授权码将作为密码使用,而不是你登录 QQ 邮箱的实际密码。


2. 配置 Laravel 中的邮件服务

一旦你获取了授权码,就可以在 Laravel 中配置 SMTP 邮件服务。以下是如何在 Laravel 项目中配置 QQ 邮箱的详细步骤。

步骤:

  1. 修改 .env 文件

    打开项目根目录下的 .env 文件,并添加以下配置:

    MAIL_MAILER=smtp
    MAIL_HOST=smtp.qq.com
    MAIL_PORT=465
    MAIL_USERNAME=你的QQ邮箱@qq.com
    MAIL_PASSWORD=你的授权码  # 这里填入你从 QQ 邮箱获取的授权码
    MAIL_ENCRYPTION=ssl
    MAIL_FROM_ADDRESS=你的QQ邮箱@qq.com
    MAIL_FROM_NAME="名称"

    解释:

    • MAIL_HOST: 配置为 smtp.qq.com,这是 QQ 邮箱的 SMTP 服务器地址。

    • MAIL_PORT: 配置为 465,这个端口是使用 SSL 加密的默认端口。

    • MAIL_USERNAME: 你的 QQ 邮箱地址(例如 1943759704@qq.com)。

    • MAIL_PASSWORD: 你获取的授权码,而不是你的 QQ 邮箱密码。

    • MAIL_ENCRYPTION: 设置为 ssl,表示使用 SSL 加密。

    • MAIL_FROM_ADDRESS: 配置发送邮件的邮箱地址。

    • MAIL_FROM_NAME: 配置发送者的名字。

  2. 配置邮件服务(config/mail.php

    打开 config/mail.php 文件,确保配置如下:

    'mailers' => [
        'smtp' => [
            'transport' => 'smtp',
            'host' => env('MAIL_HOST', 'smtp.qq.com'),
            'port' => env('MAIL_PORT', 465),
            'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
            'username' => env('MAIL_USERNAME'),
            'password' => env('MAIL_PASSWORD'),
            'timeout' => null,
            'auth_mode' => null,
        ],
    ],
    
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', '你的QQ邮箱@qq.com'),
        'name' => env('MAIL_FROM_NAME', 'XXXX'),
    ],

    这些设置会确保 Laravel 使用 SMTP 协议通过 QQ 邮箱发送邮件。


3. 开启 PHP 必须的扩展库

为了顺利发送邮件,确保你的 PHP 环境已启用两个扩展库:socketsopenssl

开启扩展库步骤:

  1. 打开 php.ini 文件,并找到以下行,取消注释(去掉前面的 ;):

    extension=socketsextension=openssl
  2. 重启你的 PHP 服务(如 Apache 或 PHP-FPM)。

检查是否启用:

你可以通过运行以下 PHP 代码来检查扩展是否启用:

phpinfo();

phpinfo() 的输出中查找 opensslsockets,如果这些扩展列出,说明它们已启用。


4. 测试邮件发送功能

配置完成后,可以在 Laravel 控制器中编写一个方法来测试邮件发送功能。

代码示例:

use Illuminate\Support\Facades\Mail;

public function sendTestEmail()
{
    Mail::raw('这是一封测试邮件', function ($message) {
        $message->to('收件人邮箱@example.com')
                ->subject('测试邮件 - 浮光影视');
    });

    return '邮件发送成功';
}

访问测试路由:

可以通过访问 http://your-domain.com/send-test-email 来测试邮件是否能够成功发送。


5. 常见问题排查

问题 1: 发送邮件请开启 sockets 和 openssl 扩展库

解决方法:确保 PHP 中已启用 socketsopenssl 扩展。可以通过编辑 php.ini 文件并重启 PHP 服务来解决。

问题 2: 邮件发送失败

解决方法:确保 .env 文件中配置正确,特别是授权码。可以尝试检查网络连接是否正常,或者临时关闭防火墙进行测试。


总结

通过以上步骤,你可以在 Laravel 中成功配置 QQ 邮箱的 SMTP 服务,使用它来发送邮件。确保启用了 PHP 的 socketsopenssl 扩展,并且在 .env 文件中正确配置了 QQ 邮箱的 SMTP 相关信息。如果遇到问题,可以逐步排查设置和网络问题,确保所有配置无误。


声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!