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

无法通过IMAP认证Gmail邮件服务器的问题求助

Gmail IMAP认证失败问题解决

问题概述

在自动化测试中尝试通过MailKit连接Gmail IMAP服务器获取恢复邮件验证码时,持续抛出AuthenticationException: Invalid credentials (Failure)错误。已尝试更换端口、关闭双重认证、启用IMAP、关闭防火墙/杀毒软件,问题仍未解决。

错误信息

Message:
MailKit.Security.AuthenticationException : Invalid credentials (Failure)

Stack Trace: 
ImapClient.AuthenticateAsync(Encoding encoding, ICredentials credentials, Boolean doAsync, CancellationToken cancellationToken)
ImapClient.Authenticate(Encoding encoding, ICredentials credentials, CancellationToken cancellationToken)
MailService.Authenticate(Encoding encoding, String userName, String password, CancellationToken cancellationToken)
MailService.Authenticate(String userName, String password, CancellationToken  

测试代码

using NUnit.Framework;
using PSelenium.Extensions;
using PSelenium.pageObjects;
using PSelenium.utilities;
using System;
using MailKit.Net.Imap;
using MailKit;
using MailKit.Search;
using System.Linq;

namespace PSelenium.tests
{
public class RecoveryEmailTest : Base
{

[SetUp]
public void LogginginTest()
{
    driver.Url = "https://myURL/";

    LoginPage loginPage = new LoginPage(getDriver());

    loginPage.LoggingIn("mygmail@gmail.com", "MyPSw");
}

[Test]
public void recoveryEmailTest()
{
    driver.Url = "https://myURL/";

    RecoveryEmailPage recoveryEmailPage = new RecoveryEmailPage(getDriver());

    recoveryEmailPage.setRecoveryEmail("mygmail@gmail.com");

    using (var client = new ImapClient())
    {
        client.Connect("imap.gmail.com", 993, true);

        client.Authenticate("mygmail@gmail.com", "mypsw");

        var inbox = client.Inbox;
        inbox.Open(FolderAccess.ReadOnly);
        var query = SearchQuery.SubjectContains("Verify recovery email");
        var messages = inbox.Search(query);

        string code = null;
        if (messages.Count > 0)
        {
            var message = inbox.GetMessage(messages[0]);
            var body = message.Body;
            code = body.ToString().Trim();
        }

        if (!string.IsNullOrEmpty(code))
        {
            var codeInput = recoveryEmailPage.codeReceived;
            codeInput.SendKeys(code);
        }

        client.Disconnect(true);
    }

    recoveryEmailPage.saveChanges.Click();

    GeneralExtensions generalExtensions = new GeneralExtensions();
    generalExtensions.checkBackendResponse();
        }
    }
}

解决步骤

1. 修正密码大小写不一致问题

从代码中可看到,SetUp方法使用的密码是MyPSw,但IMAP认证时用的是mypsw,两者大小写不匹配,这是直接导致认证失败的原因。先修正代码中的密码,确保和Gmail账户实际密码完全一致。

2. 使用Google App密码(推荐方案)

目前Google对第三方IMAP客户端的普通密码访问限制严格,即使关闭双重认证也可能无法登录,推荐使用App密码:

  • 登录Google账户,进入「安全」设置页面
  • 开启双重认证(App密码选项仅在开启2FA后可见)
  • 找到「App密码」选项,生成一个专门用于IMAP的App密码
  • 将代码中的原密码替换为这个生成的App密码

3. 确认IMAP访问已启用

再次检查Gmail的IMAP设置:

  • 登录Gmail,点击右上角齿轮图标 → 查看所有设置
  • 切换到「转发和POP/IMAP」标签页
  • 确认「IMAP访问」已设置为「启用IMAP」

4. 改用OAuth2认证(可选)

如果App密码方案无法使用,可考虑通过OAuth2认证连接Gmail IMAP,MailKit官方支持该流程,适合安全要求较高的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:03:25