无尘阁日记

无尘阁日记

Gmail 发送邮件配置指南:MAIL_SMTP_PASS 到底在哪里获取?
2026-05-08

Gmail 发送邮件配置指南:MAIL_SMTP_PASS 到底在哪里获取?

很多人在配置邮箱发送功能时,会卡在一个字段上:

MAIL_SMTP_PASS=

或者在 Laravel、Node.js、PHP 项目里看到类似配置:

MAIL_PASSWORD=
SMTP_PASS=
EMAIL_PASS=
MAIL_SMTP_PASS=

这几个字段本质上要填的,通常都是 Gmail 的应用专用密码

它不是你的 Gmail 登录密码,也不是 Google Authenticator 里的 6 位验证码,更不是恢复代码。它是 Google 账号单独生成的一串 16 位应用密码,专门给程序、脚本、SMTP 服务使用。


一、先搞清楚:MAIL_SMTP_PASS 是什么?

如果你要用 Gmail 给别人发邮件,比如:

  • 网站注册后发送验证码;

  • 系统发送通知邮件;

  • Laravel / Yii / Node.js 后台自动发邮件;

  • 用 SMTP 调用 Gmail 发信;

  • 自动化工作流里发送提醒邮件;

那你一般需要配置 Gmail SMTP。

常见配置长这样:

MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=你的Gmail邮箱@gmail.com
MAIL_SMTP_PASS=你的应用专用密码
MAIL_ENCRYPTION=tls

这里的 MAIL_SMTP_PASS 填的就是 Google 应用专用密码

它是一串 16 位字符,格式大概像这样:

abcd efgh ijkl mnop

放进 .env 文件时,通常去掉空格:

MAIL_SMTP_PASS=abcdefghijklmnop

二、在哪里获取 Gmail 应用专用密码?

重点来了。

它不在 Gmail 邮箱后台里。

很多人打开 Gmail,找设置、找转发、找 POP/IMAP,翻半天都找不到。因为这个密码是在 Google 账号安全设置 里面生成的。

最快入口是:

https://myaccount.google.com/apppasswords

如果你打不开,或者进去之后没有看到创建入口,就按下面步骤来。


三、完整获取步骤

1. 打开 Google 账号安全中心

先进入 Google 账号管理页面:

https://myaccount.google.com/security

也可以这样进:

右上角头像 → 管理你的 Google 账号 → 安全性

进去后,找到:

你登录 Google 的方式

这里会看到“两步验证”等安全设置。


2. 先开启两步验证

应用专用密码有一个前提:你的 Google 账号必须开启两步验证

路径一般是:

安全性 → 你登录 Google 的方式 → 两步验证

根据提示开启即可。

你可以选择:

  • 手机短信;

  • Google Authenticator;

  • Google Prompt;

  • 安全密钥;

  • 备用验证码。

建议至少绑定一个常用手机和一个身份验证器,避免以后登录麻烦。


3. 进入应用专用密码页面

两步验证开启后,再打开:

https://myaccount.google.com/apppasswords

这时候 Google 可能会要求你重新输入一次账号密码。

输入完成后,就会进入应用专用密码页面。


4. 创建一个应用密码

页面里通常会让你填写一个应用名称。

这里可以写:

SMTP

或者写得更清楚一点:

MAIL_SMTP_PASS

再或者写项目名:

我的网站邮件发送

名称只是方便你以后识别,这个名称不会影响实际使用。

填写后,点击:

创建

或者英文界面里的:

Create / Generate

5. 复制 16 位应用密码

创建完成后,Google 会显示一串 16 位密码。

大概长这样:

abcd efgh ijkl mnop

你要马上复制保存,因为这个密码通常只显示一次。

放进项目配置时,建议去掉空格:

MAIL_SMTP_PASS=abcdefghijklmnop

如果你后面忘记了,不能再次查看原密码,只能删除旧的,再重新生成一个新的。


四、常见项目配置示例

Laravel 配置示例

Laravel 里通常写在 .env 文件:

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=你的Gmail邮箱@gmail.com
MAIL_PASSWORD=abcdefghijklmnop
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=你的Gmail邮箱@gmail.com
MAIL_FROM_NAME="你的项目名"

如果你的项目字段叫 MAIL_SMTP_PASS,那就写:

MAIL_SMTP_USER=你的Gmail邮箱@gmail.com
MAIL_SMTP_PASS=abcdefghijklmnop

不同项目字段名可能不一样,但本质一样:
SMTP 用户名填 Gmail 邮箱,SMTP 密码填应用专用密码。


Node.js 配置示例

如果你用 nodemailer,可以这样写:

const nodemailer = require("nodemailer");

const transporter = nodemailer.createTransport({
  host: "smtp.gmail.com",
  port: 587,
  secure: false,
  auth: {
    user: "你的Gmail邮箱@gmail.com",
    pass: "abcdefghijklmnop"
  }
});

也可以从 .env 读取:

MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USER=你的Gmail邮箱@gmail.com
MAIL_PASS=abcdefghijklmnop

PHP 原生项目配置示例

如果你的 PHP 项目需要 SMTP 发信,一般会有类似字段:

$mailHost = 'smtp.gmail.com';
$mailPort = 587;
$mailUser = '你的Gmail邮箱@gmail.com';
$mailPass = 'abcdefghijklmnop';
$mailSecure = 'tls';

$mailPass 这里填的依然是应用专用密码。


五、Gmail SMTP 常用参数

建议直接收藏下面这组配置。

SMTP服务器:smtp.gmail.com
端口:587
加密方式:TLS
用户名:你的 Gmail 邮箱
密码:Google 应用专用密码

如果使用 SSL,也可能是:

SMTP服务器:smtp.gmail.com
端口:465
加密方式:SSL
用户名:你的 Gmail 邮箱
密码:Google 应用专用密码

一般优先用:

587 + TLS

六、为什么我找不到“应用专用密码”?

这个问题很常见,通常是下面几种情况。

1. 两步验证没有开启

这是最常见原因。

没有开启两步验证,应用专用密码入口通常不会正常出现。

先去这里开启:

https://myaccount.google.com/security

找到:

两步验证

开启之后,再访问:

https://myaccount.google.com/apppasswords

2. 你用的是公司或学校账号

如果你的邮箱是这种形式:

xxx@公司域名.com
xxx@学校域名.edu

那它可能是 Google Workspace 账号。

这种账号的应用专用密码功能,可能被管理员关闭了。

这时你需要联系管理员,让他检查:

Google Workspace 管理后台 → 安全设置 → 应用专用密码

如果管理员不允许,你自己是开不了的。


3. 账号开启了更严格的安全保护

如果你的 Google 账号开启了高级保护计划,或者只允许某些更严格的登录方式,应用专用密码可能不可用。

这种情况下,要么改用 OAuth 登录授权,要么换一个允许 SMTP 应用密码的 Gmail 账号。


4. 你找错地方了

再强调一次:

应用专用密码不在 Gmail 设置里。

不要在这里找:

Gmail → 设置 → 查看所有设置

应该去这里:

Google账号 → 安全性 → 应用专用密码

或者直接访问:

https://myaccount.google.com/apppasswords

七、几个容易搞混的东西

Gmail 登录密码

这个是你平时登录 Gmail 的密码。

不要填到 MAIL_SMTP_PASS 里。

现在 Google 通常不允许你直接用登录密码做 SMTP 密码。


Google Authenticator 验证码

这个是 6 位动态验证码。

它只用于登录验证,不能当 SMTP 密码。


恢复代码

恢复代码是账号救急用的。

比如你手机丢了,验证器没了,可以用恢复代码找回账号访问权限。

它也不能用来发邮件。


应用专用密码

这个才是你要找的。

它是 16 位密码,只给 SMTP、邮件客户端、脚本程序这类应用使用。


八、配置好后怎么测试?

如果你是 Laravel 项目,配置完 .env 后,建议执行:

php artisan config:clear
php artisan cache:clear

然后再测试发送邮件。

如果是 Node.js 项目,改完 .env 后,重启服务。

如果是 PHP 项目,也要确认配置文件被重新加载。


九、常见报错排查

报错:Username and Password not accepted

大概率是密码错了。

检查这几项:

1. 是否填成 Gmail 登录密码了?
2. 是否复制错应用专用密码?
3. 是否保留了多余空格?
4. 是否用错 Gmail 邮箱?
5. 应用专用密码是否已经被撤销?

建议重新生成一个新的应用专用密码,再试一次。


报错:Connection timed out

这通常是服务器连不上 Gmail SMTP。

检查:

1. 服务器是否能访问 smtp.gmail.com
2. 端口 587 或 465 是否开放
3. 服务器防火墙是否拦截
4. 云服务器安全组是否放行
5. 服务器网络环境是否限制 Gmail

在某些服务器环境里,访问 Gmail SMTP 可能会受限。


报错:Could not authenticate

检查配置组合:

MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=你的Gmail邮箱@gmail.com
MAIL_PASSWORD=应用专用密码
MAIL_ENCRYPTION=tls

MAIL_USERNAMEMAIL_FROM_ADDRESS 最好先保持一致。


十、安全提醒

应用专用密码可以直接让程序用你的 Gmail 发邮件,所以不要随便发给别人。

尤其不要把它写进公开代码仓库。

错误示范:

把 .env 上传到 GitHub
把密码截图发到群里
把密码写进前端代码

正确做法:

放在服务器 .env 文件里
放在 CI/CD 的 Secret 变量里
放在环境变量管理器里
定期检查不用的应用密码并删除

如果怀疑泄露,马上进入应用专用密码页面,把旧密码删除,再生成新的。


十一、一句话总结

配置 Gmail 发邮件时,MAIL_SMTP_PASS 填的是 Google 账号生成的 16 位应用专用密码

获取路径记住这个:

Google账号 → 安全性 → 两步验证 → 应用专用密码

最快入口:

https://myaccount.google.com/apppasswords

生成后,把 16 位密码填进项目配置里,就可以通过 Gmail SMTP 给别人发送邮件了。