目的

使用gmail寄信

建立新專案

選擇ASP.NET Core Web API專案範本,並執行下一步 步驟1

設定新的專案

命名你的專案名稱,並選擇專案要存放的位置。 步驟2

其他資訊

直接進行下一步 步驟3

NuGet加入套件

  • Google.Apis.Auth(使用google信箱時需要做oauth驗證才可以使用)
  • MailKit(寄信)

步驟4

編輯WeatherForecastController檔案

將預設的API註解 步驟5-1

[HttpGet("SendEmail")]
    public async Task<IActionResult> Get() {
      #region OAuth驗證
      const string GMailAccount = "前置作業文章打上去的測試帳號";

      var clientSecrets = new ClientSecrets {
        ClientId = "前置作業文章最後給的用戶ID",
        ClientSecret = "前置作業文章最後給的用戶端密碼"
      };

      var codeFlow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer  {
        DataStore = new FileDataStore("CredentialCacheFolder", false),
        Scopes = new[] { "https://mail.google.com/" },
        ClientSecrets = clientSecrets
      });

      var codeReceiver = new LocalServerCodeReceiver();
      var authCode = new AuthorizationCodeInstalledApp(codeFlow, codeReceiver);

      var credential = await authCode.AuthorizeAsync(GMailAccount, CancellationToken.None);

      if (credential.Token.IsExpired(SystemClock.Default))
        await credential.RefreshTokenAsync(CancellationToken.None);

      var oauth2 = new SaslMechanismOAuth2(credential.UserId, credential.Token.AccessToken);
      #endregion

      #region 信件內容
      var message = new MimeMessage();
      //寄件者名稱及信箱(信箱是測試帳號)
      message.From.Add(new MailboxAddress("bill", "xxxx@gmail.com"));
      //收件者名稱,收件者信箱
      message.To.Add(new MailboxAddress("billhuang", "xxxx@gmail.com"));
      //信件標題
      message.Subject = "How you doing'?";
      //信件內容
      message.Body = new TextPart("plain") {
        Text = @"This is test"
      };
      using (var client = new SmtpClient()) {
        await client.ConnectAsync("smtp.gmail.com", 587);
        await client.AuthenticateAsync(oauth2);
        await client.SendAsync(message);
        await client.DisconnectAsync(true);
      } 
      #endregion

      return Ok("OK");
    }

步驟5-2

執行結果

F5執行後,依照下列步驟操作,最後看到OK後,就可以去信箱確認有沒有收到信了。 步驟6-1 步驟6-2 步驟6-3 MailKit為基於MimeKit解析器的客戶端函式庫 MimeKit為解析器,用於解析電子郵件格式

參考

官方網站 官方GmailOauth2範例 Gmail教學

範例檔

GitHub