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

问题描述 投票:0回答:3

到目前为止,我很高兴使用类似于以下的方法连接到我的 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 日起,这不再可能,因为对“不太安全的应用程序”的支持已禁用

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

现在如何将 Mailkit 与 Gmail 一起使用?

.net gmail imap mailkit
3个回答
33
投票

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

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

  1. 在您的 Google 帐户中启用两步验证。此步骤是必需的,因为 Google 只允许为启用了两步验证的帐户上的应用程序生成密码。

  2. 前往生成应用程序密码 (https://myaccount.google.com/apppasswords) 并为您的应用程序生成密码

    enter image description here

  3. 只需使用您的 gmail 用户名 (

    [email protected]
    ) 和在
    c#
    应用程序中生成的密码即可。


2
投票

您只需使用 gmail 的“应用程序密码”选项即可。

今天处理这个问题。只需转到 Gmail 帐户,然后转到管理您的 Google 帐户 > 安全。

从这里启用两步验证,完成后您将看到两步验证选项下出现“应用程序密码”选项。单击此按钮,命名您要使用的设备,然后将为您提供的生成的密码复制并粘贴到您的代码中,以代替您使用的旧密码。

我现在已经为我们的办公室打印机和 python 脚本完成了此操作,我必须自动将时间表发送给每个人。


0
投票

访问 Google 帐户设置。 从左侧选择“安全”。 在“登录 Google”部分下,单击“两步验证”并按照提示启用它。 启用两步验证后,点击“应用程序密码”。系统可能会要求您重新输入密码。 在“应用程序密码”部分中,在“选择应用程序”下拉列表中选择“邮件”,然后在“选择设备”下拉列表中选择您正在使用的设备,然后单击“生成”。 Google 将为您生成一个新的 16 个字符的密码。您将在代码中使用此密码,而不是常规的 Google 密码。

public async Task SendEmailAsync(string email, string subject, string message)

{ var emailMessage = new MimeMessage();

  emailMessage.From.Add(new MailboxAddress("Администрация сайта", "[email protected]"));
  emailMessage.To.Add(new MailboxAddress("", email));
  emailMessage.Subject = subject;
  emailMessage.Body = new TextPart(MimeKit.Text.TextFormat.Html)
  {
      Text = message
  };

  using (var client = new SmtpClient())
  {
      await client.ConnectAsync("smtp.gmail.com", 587, SecureSocketOptions.StartTls);
      await client.AuthenticateAsync("[email protected]", "app code");
      await client.SendAsync(emailMessage);

      await client.DisconnectAsync(true);
  }

}

https://medium.com/@abhinandkr56/how-to-send-emails-using-net-core-mailkit-and-googles-smtp-server-6521827c4198

© www.soinside.com 2019 - 2024. All rights reserved.