You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel在cPanel生产环境使用Gmail发件失败,本地正常求助

Laravel Gmail SMTP 535认证失败问题(cPanel生产环境)

问题核心

本地运行正常,cPanel生产环境报535 Authentication Failed,本质是Gmail的安全机制限制了非信任环境的登录,或服务器网络/配置问题导致认证失败。

修复步骤

1. 启用Gmail应用专用密码(必做)

Gmail默认禁止"低安全性应用"登录,即使输入正确密码也会认证失败,必须通过两步验证+应用专用密码解决:

  • 登录Google账号,开启「两步验证」(路径:账号设置 -> 安全 -> 两步验证)
  • 开启后,在同一页面找到「应用专用密码」,生成一个用于Laravel的专用密码
  • 将.env中的MAIL_PASSWORD替换为这个生成的专用密码,不要用原邮箱密码

2. 修正Laravel邮件配置

尝试切换端口和加密方式,部分cPanel服务器可能屏蔽465端口,改用587+TLS:

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=test_email@gmail.com
MAIL_PASSWORD=你的应用专用密码
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=test_email@gmail.com
MAIL_FROM_NAME="${APP_NAME}"

部署后务必清除配置缓存:

php artisan config:cache

(cPanel环境可通过「终端」工具执行该命令)

3. 检查cPanel服务器网络限制

  • 联系主机商确认服务器是否允许出站连接到smtp.gmail.com的465/587端口,部分主机商会默认限制外部SMTP流量
  • 可通过终端执行telnet smtp.gmail.com 587测试连通性,能正常连接则端口无问题

4. 可选:配置SPF/DKIM提升送达率

在cPanel域名管理中添加SPF记录:

v=spf1 include:_spf.google.com ~all

若使用Google Workspace,可进一步配置DKIM记录,避免邮件被标记为垃圾邮件

替代邮件服务器建议

如果Gmail的配置仍无法解决,推荐以下更稳定的方案:

方案1:cPanel自带邮件服务器

直接使用cPanel创建的域名邮箱,无需依赖外部服务:

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=25
MAIL_USERNAME=your-email@yourdomain.com
MAIL_PASSWORD=你的cPanel邮箱密码
MAIL_ENCRYPTION=null

方案2:SendGrid(免费额度充足)

免费版每月可发送10000封邮件,配置简单:

MAIL_MAILER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=你的SendGrid API密钥
MAIL_ENCRYPTION=tls

方案3:Mailgun

适合Laravel项目,免费版每月可发送5000封邮件,配置逻辑与SendGrid一致

附:你提供的代码修正(转义字符还原)

.env配置(原内容)

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=test_email@gmail.com
MAIL_PASSWORD=**************
MAIL_ENCRYPTION=ssl

控制器代码

if (strlen($password_generado) > 0) {
    $usuario = DB::table('users')
        ->where('email', $request->correo)
        ->update([
            'password' => $NewPass,
        ]);
    //Send email
    Mail::to($request->correo)->send(new Subscribe($request->correo, $request->nombre, $password_generado));
    return 1;
} else {
    return 2;
}

邮件模型代码

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class Subscribe extends Mailable
{
    use Queueable, SerializesModels;
    public $email;
    public $user;
    public $pass;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($email, $user, $pass)
    {
        $this->email = $email;
        $this->user = $user;
        $this->pass = $pass;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->subject('Gracias por unirte a GPC')
            ->markdown('emails.subscribers');
    }
}

视图代码

@component('mail::message')
# Bienvenido a GPC

Querido {{$user}}

Ten enviamos este mensaje para que puedas acceder al sistemas GPC
Usuario -> {{$email}}<br>
Contraseña -> {{$pass}}

@component('mail::button', ['url' => 'https://campus.com/login'])
Ingreso GPC
@endcomponent

Gracias,<br>
{{ config('app.name') }}
@endcomponent

内容的提问来源于stack exchange,提问作者Hans_Cusco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:53:14