尝试从C#应用程序连接到Gmail时出现身份验证错误,但没有安全警报电子邮件

尝试从C#应用程序连接到Gmail时出现身份验证错误,但没有安全警报电子邮件,gmail,gmail-imap,mailkit,Gmail,Gmail Imap,Mailkit,我正在建立一个原型网站来展示一个客户,并且需要连接到Gmail来访问电子邮件。为了简单起见(因为这是一个原型),我正在尝试使用我创建的一次性Gmail帐户的电子邮件和密码进行连接。当我们(满怀希望地)获得完整应用程序的协议时,完全安全性将在稍后到来 我正在使用Mailkit,代码如下 ImapClient client = new(); await client.ConnectAsync("imap.gmail.com", 993, SecureSocketOptio

我正在建立一个原型网站来展示一个客户,并且需要连接到Gmail来访问电子邮件。为了简单起见(因为这是一个原型),我正在尝试使用我创建的一次性Gmail帐户的电子邮件和密码进行连接。当我们(满怀希望地)获得完整应用程序的协议时,完全安全性将在稍后到来

我正在使用Mailkit,代码如下

  ImapClient client = new();
  await client.ConnectAsync("imap.gmail.com", 993, SecureSocketOptions.SslOnConnect);
  await client.AuthenticateAsync(userName, password);
我第一次在本地机器上尝试此操作时,身份验证失败,一封“安全警报”电子邮件发送到Gmail帐户,说有新设备试图登录。它让我可以选择检查活动,并确认新设备实际上就是我

在那之后,我可以从本地机器上毫无问题地运行代码

另一个开发人员刚刚签出了我的更改,并在他的机器上进行了尝试,结果得到了一个auth失败的异常。可以理解,因为他的设备以前从未用于此。然而,这一次,Gmail帐户没有收到“安全警报”电子邮件,因此他无法告诉谷歌他的设备是可信的

然后,我将该站点部署到测试服务器上,并遇到了相同的问题

有人知道为什么我们没有收到其他开发人员机器或测试服务器的“安全警报”电子邮件吗?更重要的是,你知道我们如何让谷歌相信这两款设备吗?在这个阶段,我没有资源将OAuth添加到这个原型中

Imap日志如下所示

谢谢

Imap日志

Connected to imaps://imap.gmail.com:993/
S: * OK Gimap ready for requests from 185.160.182.96 n14mb29765764wrp
C: A00000000 CAPABILITY
S: * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER AUTH=XOAUTH
S: A00000000 OK Thats all she wrote! n14mb29765764wrp
C: A00000001 AUTHENTICATE PLAIN AG5vd2l0c21pbmUyMDIwQGdtYWlsLmNvbQBIZXl5b3VBbmRtZTEy
S: * NO [WEBALERT https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbsNd6RU3LIlgDfhmL9Y7ywYhtagFig_xfuSJCUHD9Eg3XqN8DKlDk3G8jmj2w5viIm5PDC3BS4SVy7iFMB6g1244cnQt1E60EdOTSEpnqDzL6FH2L-ReOAyZ3qkSXZQZs2pIfL2] Web login required.
S: A00000001 NO [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure)


Gmail有这个安全功能,它要求你首先通过机器上的网络浏览器登录,然后才能通过IMAP进行连接

您可以通过转到gmail设置并为您的应用程序创建特定于应用程序的密码来解决此问题

此外,MailKits FAQ还有一个部分,介绍为了允许“不太安全的应用”进行身份验证,需要更改哪些设置。不确定你是否已经完成了这些步骤


您是否也可以为MailKit提交功能请求,以添加对Gmail[WEBALERT…]响应代码的支持?快速看一眼,我认为MailKit可能会解析并发出事件(在这种情况下,它不会对你的应用程序有多大帮助,但无论如何可能有用?

感谢您一如既往的大力支持!我确实启用了不太安全的应用程序,这就是我最初让它工作的原因。事实证明,实现OAuth并不像我想象的那么痛苦,所以我决定走这条路。不过,我还是会加入那个特性请求。再次感谢。