当前位置: 首页 > news >正文

Outlook授权流程、Gmail QQ邮箱 IMAP 授权码的获取方式

文章目录

    • 概要
    • QQ邮箱
    • Gmail
    • Outlook
      • 1. 授权流程
      • 2. 关键配置
      • 3. Token 管理
      • 4. PKCE 支持
      • 5. 安全措施
    • 代理依赖
      • SOCKS 代理(IMAP 连接)
    • Azure Portal 配置指南
      • 1. 应用注册
      • 2. 配置身份验证(Authentication)
      • 3. 配置客户端密码(Certificates & secrets)
      • 4. 配置 API 权限
      • 5. 配置支持的账户类型(Manifest)
      • 6. 当前应用信息
      • 7. 新环境部署检查清单
      • 8. 常见问题

概要

邮箱验证密码 邮件采集能力总结

邮箱类型密码验证邮件采集说明
QQ/Foxmail通过 IMAP 授权码
163/126/yeah通过 IMAP 授权码
Gmail通过应用专用密码(采集服务需要配置代理)
Yahoo通过应用专用密码
新浪通过 IMAP 授权码
Outlook/Hotmail/Live微软禁用基本认证,需 OAuth 2.0

QQ邮箱

QQ邮箱IMAP授权码获取步骤:

  1. 登录 mail.qq.com
  2. 设置 → 账户 → POP3/IMAP/SMTP 服务
  3. 开启"IMAP/SMTP服务"
  4. 按提示发送短信生成16位授权码

Gmail

Gmail应用专用密码获取步骤:

  1. 登录 myaccount.google.com
  2. 安全性 → 开启"两步验证"(未开启需先开启)
  3. 直接访问 myaccount.google.com/apppasswords
  4. 输入应用名称如"IMAP客户端",点击"创建"
  5. 复制生成的16位应用专用密码
  6. 将密码粘贴到此输入框

Outlook

Microsoft 从 2022 年 10 月起已弃用 Outlook.com/Hotmail/Live 邮箱的 IMAP 基本身份验证
技术实现:使用 OAuth 2.0 + Microsoft Graph API,让用户主动授权
前置条件:开始实现前需要在 Azure Portal 注册应用(内容较多,步骤放在后面)

1. 授权流程

用户点击"授权连接" → 后端生成授权 URL(含 PKCE code_challenge + login_hint) → 前端打开微软登录窗口 → 用户登录并授权 → 微软回调 /api/email/oauth/callback?code=xxx&state=xxx → 后端验证 state + 用 code+code_verifier+client_secret 换取 token → 加密存储 refresh_token → 更新 oauth_status=AUTHORIZED → 返回 HTML 页面,postMessage 通知父窗口

2. 关键配置

配置项说明
email.outlook.oauth.client-idAzure AD 应用 Client ID
email.outlook.oauth.client-secretAzure AD 应用 Client Secret
email.outlook.oauth.tenant-idconsumers(个人账号)
email.outlook.oauth.scopeoffline_access https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/User.Read
email.outlook.oauth.redirect-uri各环境的回调地址

3. Token 管理

  • access_token 缓存:Redis,key=outlook:token:{emailId},TTL=50min
  • refresh_token 存储:数据库oauth_refresh_token字段,AES-256-GCM 加密
  • token 刷新:采集时缓存未命中则用 refresh_token 换取新 access_token
  • token 轮换:微软可能在刷新时返回新的 refresh_token,需要更新数据库
  • token 失效:返回invalid_grant时标记oauth_status=EXPIRED

4. PKCE 支持

  • code_verifier:43 字符 URL-safe 随机字符串
  • code_challengeBASE64URL(SHA256(code_verifier))
  • 存储:Redis,与 state 一起存储,key=outlook:state:{state},TTL=10min

5. 安全措施

  • state 参数防 CSRF(一次性消费)
  • login_hint 引导用户登录正确账号
  • client_secret 通过环境变量注入
  • refresh_token 加密存储

代理依赖

SOCKS 代理(IMAP 连接)

配置说明
email.proxy.enabled是否启用代理
email.proxy.host代理地址(默认 127.0.0.1)
email.proxy.port代理端口(默认 7890)

需要代理的场景

  • Gmail IMAP 连接(imap.gmail.com被墙)
  • 其他被墙的邮箱服务器

不需要代理的场景

  • QQ/163/126 等国内邮箱
  • Microsoft OAuth Token Endpoint(login.microsoftonline.com国内可直连)
  • Microsoft Graph API(graph.microsoft.com国内可直连)

Azure Portal 配置指南

1. 应用注册

  1. 登录 Azure Portal
  2. 进入Microsoft Entra ID(原 Azure Active Directory)→应用注册新注册
  3. 填写:
    • 名称:项目名称即可,示例:email-verify
    • 支持的账户类型:任何组织目录中的账户和个人 Microsoft 账户(AzureADandPersonalMicrosoftAccount)
    • 重定向 URI:暂时留空(后续配置)
  4. 点击"注册",记录生成的Application (client) ID

2. 配置身份验证(Authentication)

  1. 左侧菜单 →Authentication (Preview)
  2. 点击“+ 添加重定向 URI”“添加平台”→ 选择Web
  3. 添加所有环境的重定向 URI(根据实际项目填写即可):
http://localhost:XXXXXX/api/email/oauth/callback (开发环境) https://XXXXXX/api/email/oauth/callback (测试环境) https://XXXXXX/api/email/oauth/callback (生产环境)
  1. 不勾选"隐式授权和混合流"中的任何复选框(使用标准 Authorization Code Flow)
  2. 点击"配置"保存

3. 配置客户端密码(Certificates & secrets)

  1. 左侧菜单 →证书和密码
  2. 点击“新客户端密码”
  3. 填写描述:email-oauth,过期时间选24 个月
  4. 点击"添加"
  5. 立即复制生成的密码值(只显示一次!)
  6. 记录:
    • 值(Value):即client-secret,配置到OUTLOOK_OAUTH_CLIENT_SECRET环境变量
    • 机密 ID:仅用于标识,不需要配置到代码中

4. 配置 API 权限

  1. 左侧菜单 →API 权限
  2. 点击“添加权限”→ 选择Microsoft Graph委托的权限
  3. 搜索并勾选以下权限:
    • IMAP.AccessAsUser.All— 邮箱 IMAP 读写访问
    • Mail.ReadWrite— 邮件读写(Graph API 邮件采集使用)
    • offline_access— 获取 refresh_token
    • User.Read— 读取用户基本信息(默认已有)
  4. 点击"添加权限"

注意:IMAP.AccessAsUser.AllMail.ReadWrite都添加,确保兼容性。实际采集使用Mail.ReadWrite(Graph API)。

5. 配置支持的账户类型(Manifest)

  1. 左侧菜单 →清单(Manifest)
  2. 确认以下字段值:
{"signInAudience":"AzureADandPersonalMicrosoftAccount","isFallbackPublicClient":true}
  1. 如果signInAudience不是AzureADandPersonalMicrosoftAccount,需要修改并保存

6. 当前应用信息

项目
应用名称email-verify
Application (client) IDxxxx-xxxx-xxxx-xxxx-xxxx`
Directory (tenant) ID使用consumers(个人账号)
Client Secret 描述email-oauth
Client Secret 过期2028/5/11

7. 新环境部署检查清单

部署到新环境时,需要完成以下步骤:

  • 在 Azure Portal Authentication 中添加新环境的 redirect_uri
  • 确认 redirect_uri 使用 HTTPS(生产环境必须)
  • 确认 redirect_uri 路径与后端 context-path 一致
  • 通过环境变量注入OUTLOOK_OAUTH_CLIENT_ID
  • 通过环境变量注入OUTLOOK_OAUTH_CLIENT_SECRET(敏感信息)
  • 通过环境变量注入OUTLOOK_OAUTH_REDIRECT_URI
  • 确认 Redis 可用(state 存储 + token 缓存)
  • 确认数据库已执行迁移脚本(OAuth 字段)
  • 确认网络能访问login.microsoftonline.comgraph.microsoft.com

8. 常见问题

错误原因解决方案
invalid_request: redirect_uri is not validredirect_uri 未在 Azure Portal 注册在 Authentication 中添加
AADSTS70002: must include client_secret应用需要 client_secret在"证书和密码"中生成并配置
AADSTS70011: invalid_scopescope 格式错误或权限未添加在 API 权限中添加对应权限
AADSTS9001023: grant type not supportedROPC 不支持 /common endpointtenant-id 使用consumers
unsupported_grant_type个人账号不支持 ROPC正常行为,引导用户使用 OAuth 授权
401 body 为空Java HttpURLConnection streaming 问题代码已使用原生 HttpsURLConnection 绕过
http://www.jsqmd.com/news/828690/

相关文章:

  • 2026年昆山装修公司推荐:新房/老房/别墅全覆盖 - 元点智创
  • Spring AI完整学习路线:从Java开发到AI Agent的进阶之路(附15篇实战教程)
  • 为什么93%的开发者调不准“悲伤”语调?ElevenLabs情感参数矩阵解析,含8维情绪向量对照表
  • FPGA 实现科学计算器:含自定义软 CPU 等,多工具构建!
  • 免费MP4视频修复神器:3分钟拯救损坏的婚礼录像和珍贵回忆
  • 手把手教你预约亨得利全国腕表售后:2026年最新官方预约方式全攻略——从电话到官网,一次打通所有售后服务渠道 - 亨得利腕表维修中心
  • 2026年4月危化品运输槽罐车生产厂家推荐,硝酸/精制盐酸/食品级盐酸,危化品运输槽罐车生产厂家哪家权威 - 品牌推荐师
  • 2026年动感灯箱定制:解读行业三大核心趋势 - 速递信息
  • FreeRTOS任务调度算法深度解析:抢占式、时间片与协程实战
  • 终极指南:如何突破AI编程助手使用限制,免费享受Cursor Pro功能
  • 5分钟掌握VS Code Live Server:前端开发效率提升300%的终极秘籍
  • 5分钟终极指南:永久免费使用Cursor Pro功能的完整解决方案
  • 硬件工程师选型指南|钡特电源 AH15-20S24 与金升阳 LH15-10B24 同属工业级高可靠,参数与封装全解析
  • 2026年高频振动台TOP5实测榜单:科讯精密仪器深耕15年优选服务商避坑指南 - 速递信息
  • 避坑指南:STM32 HAL库ADC常规模式开DMA,为什么我的注入通道采样失效了?
  • SpeexDSP音频处理库深度解析:3种核心算法实现与40%性能优化实战
  • CMake链接库别再乱用link_directories了!target_link_directories才是现代项目的正确姿势
  • Redis网络模型-信号驱动
  • 杭州财税公司哪家正规专业?认准冠扬财税 - 大厂扫地工
  • PDF怎么转PNG?在线转换与本地方法对比,2026实测可用方案 - AI测评专家
  • CherryUSB终极指南:嵌入式USB开发从入门到精通
  • 2026年天津不锈钢电缆桥架、防火桥架、模压桥架选型指南与赛创电器深度评测 - 精选优质企业推荐官
  • 3步告别手动标注:Sketch Measure如何重塑设计开发协作流程
  • Windows终极优化神器Winhance中文版:让系统飞起来的完整指南
  • FPGA 资源优化实战手册
  • 微软广告智能代理:基于AI的自动化投放与优化实践
  • YOLOv8花生种子霉变识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)
  • 上海湘杰仪器仪表:丽水电子万能材料试验机怎么联系 - LYL仔仔
  • VSCode调试QEMU vexpress-a9报错全解析与自动化配置指南
  • 雨和虹防水维修:无锡蠡湖香樟园瓷砖空鼓翘边维修真实案例|免砸砖微创修复全过程 - 雨和虹防水维修