2022年5月30日后如何使用MailKit连接Google Gmail邮箱?
MailKit对接Gmail邮箱服务配置方案
2022年5月30日Google正式停用“安全性较低的应用”访问支持后,原直接使用账号主密码认证的IMAP连接方式已被完全拦截,目前可通过以下两种合规方案完成对接:
方案一:应用专用密码(个人使用首选,配置成本最低)
前置要求
- 目标Gmail账号必须已开启两步验证,未开启两步验证的账号无法生成应用专用密码
配置步骤
- 登录Google账号进入安全设置页,找到「应用专用密码」功能入口
- 应用类型选择「其他」,自定义标识名称(如MailKitClient),点击生成后会得到16位长度的应用专用密码,该密码仅展示一次,请妥善保存
- 原有业务代码几乎无需改动,仅需调整连接参数、将原认证用的主密码替换为刚生成的应用专用密码即可
参考代码
public async Task<IEnumerable<MimeMessage>> GetMessagesAsync() { using var imapClient = new MailKit.Net.Imap.ImapClient(); // Gmail IMAP固定连接参数,直接使用SSL连接即可,无需Auto模式判断 await imapClient.ConnectAsync("imap.gmail.com", 993, SecureSocketOptions.SslOnConnect); // 注意:第二参数传入16位应用专用密码,不要填账号原登录密码 await imapClient.AuthenticateAsync("你的Gmail完整邮箱地址", "生成的16位应用专用密码"); await imapClient.Inbox.OpenAsync(FolderAccess.ReadOnly); var uids = await imapClient.Inbox.SearchAsync(SearchQuery.All); var messages = new List<MimeMessage>(); foreach (var uid in uids) messages.Add(await imapClient.Inbox.GetMessageAsync(uid)); imapClient.Disconnect(true); return messages; }
方案二:OAuth2.0认证(商用/多用户场景推荐)
该方案无需用户提供账号密码,符合Google官方的安全规范,适合面向多用户的产品使用
配置步骤
- 在Google Cloud控制台创建新项目,搜索并开启Gmail API服务
- 进入OAuth同意屏幕配置页,填写应用基本信息,添加IMAP访问所需的权限范围
- 创建OAuth2.0客户端凭证,获取客户端ID、客户端密钥
- 按照Google OAuth2.0流程引导用户完成账号授权,获取对应用户账号的访问令牌(access_token)与刷新令牌(refresh_token)
- 使用MailKit原生支持的SASL OAuth2机制完成认证即可
认证参考代码
// 完成授权流程拿到access_token后,构造OAuth2认证凭证 var oauthCredential = new SaslMechanismOAuth2("用户Gmail邮箱地址", "获取到的access_token"); await imapClient.AuthenticateAsync(oauthCredential);
注意事项
不存在绕过Google安全校验继续使用主密码直连的方法,所有这类请求都会直接返回认证失败错误。
应用专用密码和账号主密码权限隔离,若发生泄露可随时在Google安全设置页单独撤销,不会影响主账号安全。
内容的提问来源于stack exchange,提问作者Pawel
相关产品推荐
相关产品推荐

