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_USERNAME 和 MAIL_FROM_ADDRESS 最好先保持一致。
十、安全提醒
应用专用密码可以直接让程序用你的 Gmail 发邮件,所以不要随便发给别人。
尤其不要把它写进公开代码仓库。
错误示范:
把 .env 上传到 GitHub 把密码截图发到群里 把密码写进前端代码
正确做法:
放在服务器 .env 文件里 放在 CI/CD 的 Secret 变量里 放在环境变量管理器里 定期检查不用的应用密码并删除
如果怀疑泄露,马上进入应用专用密码页面,把旧密码删除,再生成新的。
十一、一句话总结
配置 Gmail 发邮件时,MAIL_SMTP_PASS 填的是 Google 账号生成的 16 位应用专用密码。
获取路径记住这个:
Google账号 → 安全性 → 两步验证 → 应用专用密码
最快入口:
https://myaccount.google.com/apppasswords
生成后,把 16 位密码填进项目配置里,就可以通过 Gmail SMTP 给别人发送邮件了。
发表评论: