使用 OAuth2 在 C# 中訪問 Gmail 的 IMAP

本文專注於使用 IMAP 客戶端作為 .NET 庫的一部分來處理 Gmail,這是一個廣泛使用的電子郵件服務。它涵蓋了通過 OAuth 2.0 驗證用戶的基本步驟,從而使安全訪問 Gmail 帳戶成為可能。它還解釋了如何從 Google Cloud Console 獲取必要的憑證、檢索訪問令牌以及使用 C# 和 .NET API 連接到 Gmail。在本指南結束時,您將獲得以編程方式管理電子郵件消息的技能,使應用程序能夠與 Gmail 互動。這些技術對於構建電子郵件客戶端或自動化任務非常有用,增強了開發工作。

.NET 庫訪問 Gmail 的 IMAP

Aspose.Email for .NET 通過提供強大的即用型類和方法來簡化使用 OAuth 2.0 認證通過 IMAP 訪問 Gmail 的過程。這是一個旨在處理 .NET 應用程序中各種電子郵件相關任務的庫。它支持流行的電子郵件協議,包括 IMAP、POP3 和 SMTP,使其成為開發人員在電子郵件功能方面的重要工具。

使用 Aspose.Email,您可以安全地連接到 Gmail 帳戶,檢索郵件,並管理郵箱數據,而無需擔心協議實現的複雜性。該庫抽象了許多低級細節,使開發人員能夠專注於編寫清晰、功能性強的電子郵件管理代碼,無論是用於電子郵件客戶端、自動化還是後端服務。

要利用該庫的功能,只需使用 NuGet 包管理器安裝它並將其集成到您的項目中:

  • 在 Visual Studio 中打開您的項目。
  • 導航到工具 > NuGet 包管理器 > 管理解決方案的 NuGet 包。
  • 搜索 Aspose.Email
  • 選擇該包並單擊安裝。

或者,您可以使用包管理器控制台並輸入以下命令:

Install-Package Aspose.Email

您還可以直接從 Aspose 網站下載 API 的最新版本。

安裝該庫後,開始編碼吧!

在 Google Cloud Console 中獲取客戶端 ID 和客戶端密鑰

由於 Gmail 不再支持直接登錄和密碼驗證,您需要使用 OAuth 2.0 進行連接。 OAuth 2.0 提供了一個強大的授權框架,允許應用程序安全地訪問用戶數據,而不會暴露敏感憑證。

以下步驟將指導您如何從 Google Cloud Console 獲取客戶端 ID 和客戶端密鑰,特別是用於通過 IMAP 連接到郵箱。

  1. 訪問 Google Cloud Console

首先,導航到 Google Cloud Console 並使用您的 Google 帳戶登錄。該平台允許您為項目管理和配置 Google 服務。

  1. 創建新項目
  • 單擊頁面頂部的項目下拉菜單。
  • 選擇“新項目”。
  • 為您的項目輸入描述性名稱,並根據需要選擇計費帳戶。
  • 單擊“創建”以完成您的新項目。
  1. 啟用 Gmail API 以訪問數據
  • 在左側導航窗格中,單擊“API 和服務”,然後單擊“庫”。
  • 搜索“Gmail API”。
  • 單擊 API 條目並點擊“啟用”。
  1. 設置 OAuth 同意屏幕
  • 導航到“API 和服務”,然後選擇“OAuth 同意屏幕”。
  • 根據您的用戶基礎選擇“外部”或“內部”。
  • 填寫必要的字段,例如應用名稱和用戶支持電子郵件。
  • 單擊“保存並繼續”以繼續。
  1. 創建憑證

憑證對於您的應用程序安全地與 Google 的服務進行通信至關重要。

  • 轉到“API 和服務”並選擇“憑證”。
  • 單擊“+ 創建憑證”,然後選擇“OAuth 2.0 客戶端 ID”。
  1. 配置您的 OAuth 2.0 客戶端 ID
  • 將應用程序類型設置為“桌面應用”。
  • 命名您的 OAuth 2.0 客戶端。
  • 添加授權的重定向 URI,例如 http://localhost 用於本地測試。
  • 單擊“創建”以生成憑證。
  1. 檢索客戶端 ID 和客戶端密鑰

創建憑證後,您將看到一個對話框顯示您的 客戶端 ID客戶端密鑰。通過單擊下載按鈕下載 JSON 格式的憑證文件。

  1. 配置範圍
  • 返回“OAuth 同意屏幕”。
  • 單擊“添加或移除範圍”以選擇“https://mail.google.com/”權限,以便通過 IMAP 訪問郵箱數據。

您現在已成功獲取 Google Cloud Console 中的 OAuth 的客戶端 ID 和客戶端密鑰。這些憑證將允許您驗證用戶並通過 IMAP 安全地連接到他們的郵箱。

獲取 Gmail API 的訪問令牌

訪問令牌對於對 API 的請求(例如 Gmail API)進行身份驗證至關重要。本節解釋了如何獲取訪問令牌。我們將通過代碼示例演示獲取訪問令牌的過程,以便與 Gmail 數據進行交互。

在開始之前,請確保您已經:

  • 擁有啟用了 Gmail API 的 Google Cloud 項目。
  • 從 Google Cloud Console 下載的 OAuth 2.0 憑證(JSON 文件)。
  • 在您的 C# 項目中安裝了 Google.Apis.Auth 庫。您可以通過 NuGet 安裝它:
Install-Package Google.Apis.Auth

要以編程方式獲取令牌,我們將採取以下行動:

  1. 導入必要的命名空間 Google.Apis.Auth.OAuth2 以使用 Google 的身份驗證功能。
  2. 創建一個靜態異步的 GetAccessToken 方法,該方法將接受包含 OAuth 2.0 憑證的 JSON 文件的路徑作為參數。

獲取 GetAccessToken 方法將包括以下步驟:

  1. 定義 Gmail API 所需的範圍。在我們的情況下,我們請求訪問用戶的 Gmail 帳戶。
  2. 使用 GoogleClientSecrets.FromFile 方法從指定的 JSON 文件加載 OAuth 2.0 客戶端密鑰。
  3. 使用 GoogleWebAuthorizationBroker.AuthorizeAsync 方法啟動授權過程。該方法將提示用戶進行身份驗證並授權訪問。

一旦授權成功,將返回訪問令牌,使您能夠對 Gmail API 進行身份驗證請求。

以下是檢索訪問令牌的代碼示例:

using Google.Apis.Auth.OAuth2;
static async Task<string> GetAccessToken(string pathToAccessParameters)
{
// Gmail API scope
string[] scopes = { "https://mail.google.com/" };
// Use the JSON file with OAuth 2.0 credentials
var clientSecrets = GoogleClientSecrets.FromFile(pathToAccessParameters).Secrets;
// Acquire tokens
var credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
clientSecrets,
scopes,
"username (e.g. username@gmail.com)",
CancellationToken.None);
return credential.Token.AccessToken;
}

您已成功實現了使用 OAuth 2.0 在 C# 中獲取 Gmail API 的訪問令牌的方法。此訪問令牌使您的應用程序能夠代表用戶執行授權操作。請記得安全地處理訪問令牌,並根據需要刷新它以維持用戶訪問。

通過 IMAP 連接到 Gmail

本節將指導您如何使用 Aspose.Email for .NET 連接到 Gmail。我們將考慮建立安全連接並從 Gmail 帳戶檢索電子郵件消息所需的代碼。

在開始之前,請確保您已經有了前面所述的用於身份驗證的訪問令牌檢索方法。

作為示例,我們將創建一個 IMAP 客戶端,設置必要的參數並列出“收件箱”文件夾中的消息:

  1. 調用 GetAccessToken 方法,傳遞 OAuth 2.0 憑證文件的路徑。此方法返回身份驗證所需的訪問令牌。

  2. 使用以下參數創建 ImapClient 的實例。

    Host: "imap.gmail.com" 指定 Gmail 的 IMAP 服務器。

    Port: 993 是安全的 IMAP 通過 SSL 的端口。

    Username: 您的 Gmail 電子郵件地址。

    Access Token: 從 GetAccessToken 方法檢索到的訪問令牌。

    Use OAuth: true 參數表示使用 OAuth 進行連接。

    Security Options: SecurityOptions.SSLAuto 確保自動 SSL 協商。

  3. 調用 SelectFolderAsync 方法以指定要訪問的郵箱文件夾——在我們的情況下是收件箱。

  4. 調用 ListMessages 方法從所選文件夾檢索電子郵件消息列表。我們輸出檢索到的消息數量,並迭代每條消息以打印主題行。

以下是使用 IMAP 連接到 Gmail 的 C# 代碼:

using Aspose.Email.Clients;
using Aspose.Email.Clients.Base;
using Aspose.Email.Clients.Imap;
var accessToken =
await GetAccessToken(
"googleusercontent.com.json");
// Connect to Gmail IMAP with OAuth
using var client = new ImapClient("imap.gmail.com", 993, "dmitbox@gmail.com", accessToken, true, SecurityOptions.SSLAuto);
// Select the Inbox folder
await client.SelectFolderAsync(ImapFolderInfo.InBox);
// Retrieve messages
var messages = client.ListMessages();
Console.WriteLine($"Number of messages: {messages.Count}");
foreach (var message in messages)
{
Console.WriteLine(message.Subject);
}

您現在已成功使用 C# 和 Aspose.Email .NET 連接到 Gmail 的 IMAP。

當然,示例中使用的 ImapClient 方法只是其中的一部分。Aspose.Email 覆蓋了 IMAP 協議在客戶端側的幾乎所有功能,包括文件夾管理、消息檢索和附件處理。此外,它還提供對搜索和篩選消息等高級操作的支持。

結論

在本文中,我們探討了通過 IMAP 協議使用 C# 與 Gmail 進行交互的技術。我們涵蓋了如何從 Google Cloud Console 獲取 OAuth 2.0 憑證、檢索訪問令牌以及安全地連接到 Gmail 以管理電子郵件。

通過利用提供的代碼示例,您可以將 Gmail 功能集成到您的應用程序中,實現高效的電子郵件檢索和管理。

這些代碼示例由先進且穩健的 Aspose.Email for .NET 庫提供,該庫還提供了多種免費資源:

  • 綜合 文檔
  • 詳盡的 API 參考
  • 各種免費的在線工具和 應用 以增強開發過程,
  • 免費的 支持論壇 以獲得社區幫助和見解,
  • 博客 以保持對最新提示和教程的更新。

這些資源對於最大化您項目中庫的潛力非常寶貴。

另見