VB.NET/ASP.NET Отправлять автоматические исходящие сообщения Gmail с помощью OAuth - PullRequest
0 голосов
/ 23 декабря 2019

Мое приложение VB.NET/ASP.NET отправляет автоматические электронные письма моим пользователям, используя следующий код. Я получил электронное письмо от Google, что они будут прекращать работу «менее безопасных» приложений и требуют OAuth. Все электронные письма отправляются автоматически для напоминаний о предстоящих встречах и изменениях во встречах. У меня не может быть чего-то, что требует ручного входа в учетную запись электронной почты каждый раз, когда приложение должно отправить электронное письмо.

Вот мой текущий код. Кто-нибудь может подсказать мне, как изменить это для работы с учетными данными, сгенерированными в консоли разработчика Google для моей учетной записи электронной почты Gmail?

Общедоступная общая подпрограмма SendEmailInBackground (получатель в виде строки, тема в виде строки, сообщение в виде строки)

    Dim server As String = ConfigurationManager.AppSettings("SmtpHostname")
    Dim username As String = ConfigurationManager.AppSettings("SmtpUsername")
    Dim password As String = ConfigurationManager.AppSettings("SmtpPassword")

    Dim email As New System.Net.Mail.MailMessage(username, Recipient)
    email.Subject = Subject
    email.Body = Message

    Dim client As New System.Net.Mail.SmtpClient(server, 587)
    client.Credentials = New System.Net.NetworkCredential(username, password)

    client.EnableSsl = True
    client.Send(email)

End Sub

1 Ответ

0 голосов
/ 25 декабря 2019

Выполнение шагов быстрого запуска позволит вам настроить oauth [1], а затем использовать аутентифицированную службу, полученную оттуда, для отправки запросов электронной почты [2]. Пример документации с использованием аутентифицированного GmailService из быстрого запуска:

using Google.Apis.Gmail.v1;
using Google.Apis.Gmail.v1.Data;

// ...

public class MyClass {

  // ...

  /// <summary>
  /// Send an email from the user's mailbox to its recipient.
  /// </summary>
  /// <param name="service">Gmail API service instance.</param>
  /// <param name="userId">User's email address. The special value "me"
  /// can be used to indicate the authenticated user.</param>
  /// <param name="email">Email to be sent.</param>
  public static Message SendMessage(GmailService service, String userId, Message email)
  {
      try
      {
          return service.Users.Messages.Send(email, userId).Execute();
      }
      catch (Exception e)
      {
          Console.WriteLine("An error occurred: " + e.Message);
      }

      return null;
  }

  // ...

}

[1] https://developers.google.com/gmail/api/quickstart/dotnet

[2] https://developers.google.com/gmail/api/v1/reference/users/messages/send

...