2022 年 5 月 30 日之后如何通过 Google 使用 MailKit?

2024-01-29

到目前为止,我很高兴使用类似于以下的方法连接到我的 Gmail 帐户:

public async Task<IEnumerable<MimeMessage>> GetMessagesAsync()
{
    using var imapClient = new MailKit.Net.Imap.ImapClient();
    var secureSocketOptions = SecureSocketOptions.Auto;
    if (useSsl) secureSocketOptions = SecureSocketOptions.SslOnConnect;
    await imapClient.ConnectAsync(host, port, secureSocketOptions);

    await imapClient.AuthenticateAsync(login, password);

    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;
}

自 2022 年 5 月 30 日起,这不再可能,因为对“不太安全的应用程序”的支持已取消disabled https://support.google.com/accounts/answer/6010255?hl=en:

为了确保您的帐户安全,从 2022 年 5 月 30 日起,Google 不再支持使用要求您仅使用用户名和密码登录 Google 帐户的第三方应用或设备。

现在如何将 Mailkit 与 Gmail 结合使用?


停用不太安全的应用程序会阻止您直接使用您的帐户登录username and password,但这并不妨碍您为您的应用程序生成特定的密码。现在,您将使用为特定应用程序生成的密码登录,而不是使用 Google 密码登录。

解决方案很简单,不需要太多改变:

  1. 开启两步验证 https://support.google.com/accounts/answer/185839在你的谷歌帐户中。这一步是required因为 Google 只允许为启用了两步验证的帐户上的应用程序生成密码。

  2. 转到生成应用程序密码(https://myaccount.google.com/apppasswords https://myaccount.google.com/apppasswords) and 生成密码 https://support.google.com/mail/answer/185833?hl=en-GB为您的应用程序。

  3. 只需使用您的 Gmail 用户名 ([email protected] /cdn-cgi/l/email-protection)和您的密码中生成的c#应用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022 年 5 月 30 日之后如何通过 Google 使用 MailKit? 的相关文章

  • C#.NET 中的 App.config 是什么?如何使用它?

    我在 C NET 中完成了一个项目 其中我的数据库文件是 Excel 工作簿 由于连接字符串的位置在我的编码中是硬编码的 因此在我的系统中安装它没有问题 但对于其他系统则有问题 有没有办法在应用程序设置完成后提示用户设置一次路径 我得到的答
  • 使用实体框架、代码优先方法解决结构问题

    我目前正在使用 EF 和代码优先方法从现有系统构建数据库 最好对 核心 类进行最小的更改 因此 我想找到 Structs 和 EF 的解决方法 是否可以以任何方式将 Struct 包装到类中 以便 EF 可以使用此 Struct 中的数据
  • 通过并行任务库限制运行的活动任务数量的最佳方法

    考虑一个队列持有lot需要处理的作业 队列的限制是一次只能获取 1 个作业 并且无法知道有多少个作业 这些作业需要 10 秒才能完成 并且需要大量等待 Web 服务的响应 因此不受 CPU 限制 如果我使用这样的东西 while true
  • 如何确定任务栏位于哪个屏幕

    Screen PrimaryScreen 并不总是有效 因为在多显示器设置中 用户可能会将其任务栏移动到主屏幕以外的屏幕 找到具有最小工作区域的屏幕也不起作用 因为可能存在具有不同分辨率的显示器 有什么办法可以通过任务栏定位屏幕吗 您可以使
  • 在 .NET List 中设置项目 null 是否可以使其可用于垃圾回收,这是一个好主意吗?

    假设我有一个大列表 其中每个项目都被处理一次 然后在长时间操作期间不再查看 List
  • 如何获取对象具有的属性计数?

    我有一个具有许多属性的类 我需要找到一种方法来计算它所具有的属性数量 我想这样做是因为该类读取 CSV 文件 并且如果属性 csvcolumns 的数量小于文件中的列数 则需要发生特殊的事情 这是我的班级的示例 public class S
  • 为什么我会收到未找到分析器的警告?

    我创建了一个玩具项目来检查最新的 NET 7 预览版 5 和正则表达式代码生成 它效果很好 所以我对现有项目应用了相同的更改 不是为了生产 而是为了个人生产力 由于某种原因 我收到这些警告 CS8032 An instance of ana
  • 为 Rest Web 服务创建 WCF 代理

    我有一个复杂的 WCF Rest 服务 它需要多个输入和对象 我不能简单地通过在 Fiddler 中执行 HTTP POST 来调用它 因为要提供的数据太多 我可以 但这将花费我很长时间 所以我想使用代理在代码中完成它 有没有办法为 NET
  • 如何从 Access 数据库中读取“是/否”值作为布尔值?

    帮我找回YES NO来自 MS Access 的布尔格式数据类型 我尝试解析它 但它总是返回 false 更新 实际上不是问题抱歉 它确实接受 YES NO 作为布尔值 OleDbconnection dbConnect new OleDb
  • 将 dotless 添加到我的本地网站后出现 HTTP 错误 500.23

    嗨 我正在尝试跑步dotless http www dotlesscss org 在我本地的 net4 网站上 我的网络配置如下所示
  • 使用 System.Text.Json.Serialization.JsonConverter 解析 JSON 序列化过程中复杂类型的循环引用

    有一个复杂类型引用相同类型的对象 有时是同一对象 public class User public string Name get set public int Age get set public User Reference get s
  • F# 中的选项类型如何工作

    因此 我一直在阅读 Apress 的 Expert F 书籍 主要将其用作构建玩具式 F 库时的参考 但有一点我未能掌握 那就是 Option 类型 它是如何工作的以及它在现实世界中的用途是什么 选项类型至少为similar to Null
  • 我可以调试Exe吗

    我需要比较我的应用程序和工作应用程序之间的一些函数调用和签名 这里我并不是指任何逆向工程或访问其他应用程序的源代码的方法 而是真正需要知道工作应用程序使用的方法和接口是什么 我尝试将我的应用程序附加到 Visual Studio 然后 St
  • ODP.NET 可以重新分发吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Oracle ODP NET 库是否可重新分发 例如 我是否可以简单地将 Oracle DataAccess dll 包含在我的应用程序中
  • C# 组件事件?

    我正在尝试编写一个将公开事件的 C 组件 该组件将由非托管 C 应用程序导入 根据一些教程 我想出了这段代码 针对 C 端 namespace COMTest ComVisible true Guid 02271CDF BDB9 4cfe
  • Destruct.ByTransforming 似乎没有生效

    我正在尝试解构System Type仅使用类型名称 没有命名空间 但得到了意外的结果 Setup 第一个转换按预期工作 生成短字符串 a 的前 8 个字符 Guid 然而 第二个从未被调用过 Destructure ByTransformi
  • 对象 xml 反序列化问题?

    我的对象具有父子关系 每个子对象都有一个Parent指向其容器的属性 当这个对象在应用程序中创建时 它就被设置了 因此没有问题 此 Parent 属性标记有 XmlIgnore 属性 因为它需要设置为其运行时父实例 那么 在对象反序列化后初
  • 如何在 C# 中启动文件

    编辑 我觉得自己像个白痴 我有一种感觉 像下面的答案会起作用 但没有看到任何与下面的答案类似的谷歌结果 所以当我看到这段复杂的代码时 我想它一定是这样的 我搜索并找到了这个Windows 列出并启动与扩展关联的应用程序 https stac
  • 我们可以使用 C# 录制发送到扬声器的声音吗

    我有一个软件 SoundTap Streaming Audio Recorder 它记录发送到扬声器的任何音频 无论流是来自网络还是来自某些文件或麦克风 我可以在桌面应用程序中制作这样的应用程序 以便我可以录制发送到扬声器的流 无论来源如何
  • 将 .NET 类库(主要定义 CRUD 操作)公开为服务

    公开现有内容的最佳 有效和最快的方法是什么 类 图书馆 主要定义 CRUD 操作 作为service 周转基金服务 or WCF数据服务 以便它可以与银光 or Ajax 在那儿tools 代码生成器 RAD 工具 哪些可以支持这个 预先感

随机推荐

  • 什么是大 O 表示法? [复制]

    这个问题在这里已经有答案了 可能的重复 大O的简单英语解释 https stackoverflow com questions 487258 plain english explanation of big o 我知道 Big O 表示法用
  • Nancy 未能在自定义约定中找到静态内容

    我已经设置了一个 Nancy 引导程序来从非默认目录路径 它是自托管的 Nancy 提供静态内容 奇怪的是 以下内容适用于自定义视图位置约定 但不适用于 js 或 css 静态内容约定 是的 文件和文件夹都存在于这些位置 我尝试解决此问题的
  • 使用 SBT 进行多版本构建

    我想在 SBT 中实现以下构建 拥有多个 scala 版本 具有多个目标版本 由于库依赖性 让我们以一个外部库为例 它存在于版本1 0 2 0 3 0和Scala 2 92 2 10 2中 我想编译 汇编和发布 MyProject exte
  • DerivedData 中缺少 TestSummeries.plist 文件

    我正在使用 xcode 11 beta 在 iOS 13 0 设备上运行单元测试 测试执行后 它应该在里面生成一个 testummeries plist 文件 Users YourUsername Library Developer Xco
  • 使用 NSURLConnection 进行 POST - 无 JSON

    我正在尝试用 Objective C 编写一个 iPhone 应用程序 我需要使用 NSURLConnection 发布数据 我能找到的每个例子都涉及 JSON 我不需要使用 JSON 我需要做的就是 POST 数据并从 PHP 脚本获取简
  • Java 编译速度 vs Scala 编译速度

    我已经用 Scala 编程有一段时间了 我喜欢它 但令我恼火的一件事是编译程序所需的时间 这似乎是一件小事 但使用 Java 我可以对我的程序进行一些小更改 单击 netbeans 中的运行按钮 然后 BOOM 它正在运行 随着时间的推移
  • 什么是运行时环境?

    有人可以用简单的术语解释一下这意味着什么吗 是指应用程序代码运行的环境 DOS Windows Linux 等 吗 将其与开发环境和构建环境区分开来 您往往会在这里找到层次结构 运行时环境 执行程序所需的一切 但没有工具可以更改它 构建环境
  • 如何P/Invoke“__arglist”函数?

    背景 我用 C 编写了以下函数 extern C declspec dllexport int test const char 我使用 P Invoke 从 C 调用它 DllImport foo bar dll EntryPoint te
  • 使用 GPU PyOpenCL 优化 python 代码的不同方法:内核 GPU/PyOpenCL 内的 extern 函数

    我使用以下命令来分析我的 Python 代码 python2 7 m cProfile o X2 non flat multiprocessing dummy prof X2 non flat py 然后 我可以全局可视化不同贪婪函数的重新
  • 基类中的 Autofac 属性注入

    我正在开发 Windows Phone 8 1 应用程序 并且有一个具有公共属性的基类 public class ViewModelBase public ISomeClass MyProp get set 我的派生类看起来像这样 publ
  • 使用哪种 Micro ORM? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ViewPager与当前Fragment的通信

    我正在使用 ViewPager http developer android com reference android support v4 view ViewPager html http developer android com r
  • 在 WPF xaml 文件中引用另一个项目中的名称空间

    我引用另一个项目的命名空间 类库 所有模型都驻留在其中 正如相关问题中提到的 他们通过将程序集添加到 xaml 文件中解决了问题 但这对我不起作用 这就是我发帖的原因 我有 2 个项目 WPF 项目本身 类库 包含所有视图模型 WPF项目有
  • 使用pysftp下载文件

    我正在尝试加载 并直接保存在本地 csv文件存储在 FTP 服务器 SFTP 协议 上 我将 Python 与 pysftp 库结合使用 当我检查文件是否存在时 它返回 TRUE 但是当尝试加载文件时 无论我尝试什么 它似乎都是空的 如何将
  • 在特定时间启动和停止 MediaElement

    我正在将应用程序更改为 WPF 它根据定时事件播放音频 视频和图片 我使用了 string MciCommand string Format 播放帧从 0 到 1 2 前 我现在一直在 WPF c 中搜索并尝试解决这个问题 我有一个视频 w
  • 如何为 Wget 设置代理?

    我想使用代理通过 Wget 下载一些东西 HTTP Proxy 127 0 0 1 Port 8080 代理不需要用户名和密码 我怎样才能做到这一点 对于系统的所有用户 通过 etc wgetrc或仅适用于用户 wgetrc file us
  • 实体框架迁移添加列两次

    我正在运行 Entity Freemework Code First 迁移 尝试运行应用程序时 出现错误 列 ID 在规范中出现多次 我在配置中将 AutomaticMigrationsEnabled 设置为 true 因为当我运行项目时
  • highchart 和 .clone() 的问题

    我不明白当我克隆 highchart 时应该如何使用 jQuery clone 我知道 clone 不会链接对象上的方法 因此 高图的克隆看起来是正确的 但您无法再与它交互 所以 我一直在尝试以下操作 function clonage sr
  • 553 5.7.1 :发件人地址被拒绝:不属于用户 [电子邮件受保护]

    在 Rails4 应用程序中 我尝试通过配置 smtp 设置来发送电子邮件 但收到以下错误 553 5 7 1 发件人地址被拒绝 不属于用户所有 电子邮件受保护 cdn cgi l email protection 我正在使用以下设置 co
  • 2022 年 5 月 30 日之后如何通过 Google 使用 MailKit?

    到目前为止 我很高兴使用类似于以下的方法连接到我的 Gmail 帐户 public async Task