如何使用MailKit登录gmail IMAP
我正在尝试使用MailKit()使用oAuth登录Gmail。我可以使用刷新的AuthToken登录到Google API,但是当我尝试在MailKit中使用刷新的token时,我得到一个错误“无效凭据” 有什么线索吗?? 谢谢 杰夫 这是我的密码:如何使用MailKit登录gmail IMAP,gmail,imap,mailkit,Gmail,Imap,Mailkit,我正在尝试使用MailKit()使用oAuth登录Gmail。我可以使用刷新的AuthToken登录到Google API,但是当我尝试在MailKit中使用刷新的token时,我得到一个错误“无效凭据” 有什么线索吗?? 谢谢 杰夫 这是我的密码: var secrets = new ClientSecrets() { ClientId = "xxx-yyy.apps.googleusercontent.com", Client
var secrets = new ClientSecrets()
{
ClientId = "xxx-yyy.apps.googleusercontent.com",
ClientSecret = "xyzSecret"
};
IAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = secrets,
Scopes = new string[] { GmailService.Scope.GmailReadonly }
});
var tokenResponse = flow.RefreshTokenAsync("", connection.RefreshToken, CancellationToken.None).Result;
using (var client = new MailKit.Net.Imap.ImapClient())
{
var credentials = new NetworkCredential("emailtoconnect@gmail.com", tokenResponse.AccessToken);
client.Connect("imap.gmail.com", 993, true, CancellationToken.None);
try
{
client.Authenticate(credentials, CancellationToken.None);
}
catch (Exception ex)
{
throw;
}
}
这只是一个范围问题。以上代码适用于gmail oAuth
using (var client = new ImapClient())
{
client.Connect("imap.gmail.com", 993, true);
client.AuthenticationMechanisms.Remove("XOAUTH2");
client.Authenticate(EmailId, Password);
}
上面的代码用于使用imap和MailKit工具登录gmail。但在此之前,您必须手动登录到gmail,并在设置中选中“启用Imap”选项。这肯定会起作用。更清楚的答案是,原始代码中的作用域不正确
Scopes = new string[] { GmailService.Scope.GmailReadonly }
需要
Scopes = new string[] { GmailService.Scope.MailGoogleCom }
为了使用访问令牌通过imapi进行身份验证。OAUTH2需要一个自定义身份验证流,它不能使用标准IMAP身份验证,这似乎是在做什么。看起来您正在将访问令牌作为密码传递,而实际上不是。实际上,使用MailKit,我认为它是作为密码传递的。这里有一个链接到另一个使用SMTP的答案,但我的仍然不起作用。我将研究我的AuthCode可能无法使用我需要的AuthCode构建的范围。我刚刚找到了IMAP访问权限。我的只有API的读取权限。直到现在才意识到这是不同的。不管怎样,这里是link@Max.[link]()什么是
连接
变量?这在过去是有效的。我现在遇到了同样的问题。我有一些我重新编译的旧软件,它正好包含这个代码片段。我知道这个旧软件在过去能够连接,但是现在这个代码给出了一个异常“无效凭据”。在gmail中启用了IMAP。找到了一个解决方案,允许对不太安全的应用程序(如我的C#mail monitor)访问gmail(现在建议使用OAuth 2.0-请参阅-稍后将在我的应用程序中修复此问题):在Gmail设置中-转到帐户并导入,然后更改帐户设置:其他GOOGLE帐户设置安全选项卡帐户权限-访问不太安全的应用程序-单击设置-允许不太安全的应用程序访问您的Gmail邮箱。