Zugriff auf Gmail über IMAP mit OAuth2 in C#

Dieser Artikel konzentriert sich auf die Arbeit mit Gmail, einem weit verbreiteten E-Mail-Dienst, indem der IMAP-Client als Teil der .NET-Bibliothek genutzt wird. Er behandelt die wesentlichen Schritte zur Authentifizierung von Benutzern über OAuth 2.0, um einen sicheren Zugriff auf Gmail-Konten zu ermöglichen. Es wird auch erklärt, wie man die erforderlichen Anmeldeinformationen von der Google Cloud Console erhält, Zugriffstoken abruft und sich mit Gmail unter Verwendung von C# und der .NET-API verbindet. Am Ende dieses Leitfadens werden Sie Fähigkeiten erwerben, um E-Mail-Nachrichten programmgesteuert zu verwalten, sodass Anwendungen mit Gmail interagieren können. Diese Techniken sind nützlich für den Aufbau eines E-Mail-Clients oder für die Automatisierung von Aufgaben, was die Entwicklungsanstrengungen verbessert.

.NET-Bibliothek für den Zugriff auf Gmail über IMAP

Aspose.Email für .NET vereinfacht den Zugriff auf Gmail über IMAP mit OAuth 2.0-Authentifizierung, indem leistungsstarke, einsatzbereite Klassen und Methoden für die Interaktion mit den IMAP-Servern von Gmail bereitgestellt werden. Es handelt sich um eine Bibliothek, die entwickelt wurde, um eine Vielzahl von E-Mail-bezogenen Aufgaben innerhalb von .NET-Anwendungen zu erledigen. Sie unterstützt gängige E-Mail-Protokolle, darunter IMAP, POP3 und SMTP, und ist ein unverzichtbares Werkzeug für Entwickler, die an E-Mail-Funktionalitäten arbeiten.

Mit Aspose.Email können Sie sich sicher mit Gmail-Konten verbinden, Nachrichten abrufen und Mailbox-Daten verwalten, ohne sich um die Komplexität der Protokollimplementierung kümmern zu müssen. Diese Bibliothek abstrahiert viele Low-Level-Details, sodass Entwickler sich darauf konzentrieren können, sauberen, funktionalen Code für die E-Mail-Verwaltung zu schreiben, sei es für E-Mail-Clients, Automatisierung oder Backend-Dienste.

Um die Leistungsfähigkeit der Bibliothek zu nutzen, installieren Sie sie einfach über den NuGet-Paketmanager und integrieren Sie sie in Ihr Projekt:

  • Öffnen Sie Ihr Projekt in Visual Studio.
  • Navigieren Sie zu Werkzeuge > NuGet-Paket-Manager > NuGet-Pakete für die Lösung verwalten.
  • Suchen Sie nach Aspose.Email.
  • Wählen Sie das Paket aus und klicken Sie auf Installieren.

Alternativ können Sie die Paket-Manager-Konsole verwenden und den folgenden Befehl eingeben:

Install-Package Aspose.Email

Sie können auch die neueste Version der API direkt von der Aspose-Website herunterladen.

Sobald die Bibliothek installiert ist, können Sie mit dem Programmieren beginnen!

Client-ID & Client Secret für OAuth in Google Cloud Console erhalten

Da Gmail keine direkte Anmeldung und Passwort-Authentifizierung mehr unterstützt, müssen Sie OAuth 2.0 verwenden, um eine Verbindung herzustellen. OAuth 2.0 bietet einen robusten Autorisierungsrahmen, der es Anwendungen ermöglicht, sicher auf Benutzerdaten zuzugreifen, ohne sensible Anmeldeinformationen offenzulegen.

Die folgenden Schritte führen Sie durch den Prozess, eine Client-ID und ein Client Secret von der Google Cloud Console zu erhalten, speziell für die Verbindung zu einem Postfach über IMAP.

  1. Zugriff auf die Google Cloud Console

Um zu beginnen, navigieren Sie zur Google Cloud Console und melden Sie sich mit Ihrem Google-Konto an. Diese Plattform ermöglicht es Ihnen, Google-Dienste für Ihre Projekte zu verwalten und zu konfigurieren.

  1. Ein neues Projekt erstellen
  • Klicken Sie auf das Dropdown-Menü für Projekte oben auf der Seite.
  • Wählen Sie “Neues Projekt”.
  • Geben Sie einen beschreibenden Namen für Ihr Projekt ein und wählen Sie ein Abrechnungskonto aus, falls erforderlich.
  • Klicken Sie auf “Erstellen”, um Ihr neues Projekt abzuschließen.
  1. Aktivieren Sie die Gmail API, um auf Daten zuzugreifen
  • Klicken Sie im linken Navigationsbereich auf “APIs & Dienste”, dann auf “Bibliothek”.
  • Suchen Sie nach “Gmail API”.
  • Klicken Sie auf den API-Eintrag und drücken Sie “Aktivieren”.
  1. OAuth-Zustimmungsbildschirm einrichten
  • Navigieren Sie zu “APIs & Dienste”, dann “OAuth-Zustimmungsbildschirm”.
  • Wählen Sie entweder “Extern” oder “Intern”, je nach Benutzerbasis.
  • Füllen Sie die erforderlichen Felder wie App-Name und E-Mail für die Benutzerunterstützung aus.
  • Klicken Sie auf “Speichern und Fortfahren”, um fortzufahren.
  1. Anmeldeinformationen erstellen

Anmeldeinformationen sind entscheidend, damit Ihre Anwendung sicher mit den Diensten von Google kommunizieren kann.

  • Gehen Sie zu “APIs & Dienste” und wählen Sie “Anmeldeinformationen”.
  • Klicken Sie auf “+ ANMELDEDETAILS ERSTELLEN” und wählen Sie “OAuth 2.0-Client-IDs”.
  1. Konfigurieren Sie Ihre OAuth 2.0-Client-ID
  • Wählen Sie “Desktop-App” als Anwendungstyp.
  • Benennen Sie Ihren OAuth 2.0-Client.
  • Fügen Sie autorisierte Umleitungs-URIs hinzu, wie z. B. http://localhost für lokale Tests.
  • Klicken Sie auf “Erstellen”, um die Anmeldeinformationen zu generieren.
  1. Client-ID und Client Secret abrufen

Sobald Sie die Anmeldeinformationen erstellt haben, sehen Sie ein Dialogfeld, das Ihre Client-ID und Client Secret anzeigt. Laden Sie die Datei mit den Anmeldeinformationen im JSON-Format herunter, indem Sie auf die Schaltfläche “Herunterladen” klicken.

  1. Scopes konfigurieren
  • Kehren Sie zum “OAuth-Zustimmungsbildschirm” zurück.
  • Klicken Sie auf “Scopes hinzufügen oder entfernen”, um die Berechtigung “https://mail.google.com/" für den Zugriff auf Mailbox-Daten über IMAP auszuwählen.

Sie haben jetzt erfolgreich Ihre Client-ID und Ihr Client Secret für OAuth in der Google Cloud Console erhalten. Diese Anmeldeinformationen ermöglichen es Ihnen, Benutzer zu authentifizieren und sicher auf deren Postfächer über IMAP zuzugreifen, indem Sie die IMAP-Client-App verwenden.

Zugriffstoken für die Gmail API abrufen

Zugriffstoken sind entscheidend für die Authentifizierung von Anfragen an APIs, wie z. B. die Gmail API. In diesem Abschnitt wird erläutert, wie Sie ein Zugriffstoken erhalten. Wir werden ein Codebeispiel durchgehen, das den Prozess des Erwerbs eines Zugriffstokens demonstriert, um mit Gmail-Daten zu interagieren.

Bevor Sie beginnen, stellen Sie sicher, dass Sie:

  • Ein Google Cloud-Projekt mit aktivierter Gmail API haben.
  • OAuth 2.0-Anmeldeinformationen (JSON-Datei) von der Google Cloud Console heruntergeladen haben.
  • Die Google.Apis.Auth-Bibliothek in Ihrem C#-Projekt installiert ist. Sie können sie über NuGet installieren:
Install-Package Google.Apis.Auth

Um das Token programmgesteuert zu erhalten, werden wir folgende Schritte unternehmen:

  1. Importieren Sie den erforderlichen Namespace Google.Apis.Auth.OAuth2, um die Authentifizierungsfunktionen von Google zu nutzen.
  2. Erstellen Sie eine statische asynchrone Methode GetAccessToken, die als Argument den Pfad zu einer JSON-Datei mit OAuth 2.0-Anmeldeinformationen akzeptiert.

Die Implementierung der GetAccessToken-Methode wird die folgenden Schritte umfassen:

  1. Definieren Sie die erforderlichen Scopes für die Gmail API. In unserem Fall fordern wir Zugriff auf das Gmail-Konto des Benutzers an.
  2. Verwenden Sie die Methode GoogleClientSecrets.FromFile, um die OAuth 2.0-Clientgeheimnisse aus der angegebenen JSON-Datei zu laden.
  3. Verwenden Sie die Methode GoogleWebAuthorizationBroker.AuthorizeAsync, um den Autorisierungsprozess zu starten. Die Methode fordert den Benutzer auf, sich zu authentifizieren und den Zugriff zu genehmigen.

Sobald die Autorisierung erfolgreich ist, wird das Zugriffstoken zurückgegeben, das es Ihnen ermöglicht, authentifizierte Anfragen an die Gmail API zu senden.

Hier ist das Codebeispiel zum Abrufen des Zugriffstokens:

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

Sie haben erfolgreich eine Methode implementiert, um ein Zugriffstoken für die Gmail API mithilfe von OAuth 2.0 in C# zu erhalten. Dieses Zugriffstoken ermöglicht es Ihrer Anwendung, autorisierte Operationen im Namen des Benutzers durchzuführen. Denken Sie daran, das Zugriffstoken sicher zu behandeln und es nach Bedarf zu aktualisieren, um den Benutzerzugang aufrechtzuerhalten.

Verbindung zu Gmail über IMAP herstellen

Dieser Abschnitt wird Sie durch den Prozess der Verbindung zu Gmail unter Verwendung von Aspose.Email für .NET führen. Wir werden den erforderlichen Code betrachten, um eine sichere Verbindung herzustellen und E-Mail-Nachrichten von einem Gmail-Konto abzurufen.

Bevor Sie beginnen, stellen Sie sicher, dass Sie die Methode zum Abrufen des Zugriffstokens zur Authentifizierung haben, wie im vorherigen Abschnitt beschrieben.

Als Beispiel werden wir einen IMAP-Client mit den erforderlichen Parametern erstellen und Nachrichten aus dem Ordner “Posteingang” auflisten:

  1. Rufen Sie die Methode GetAccessToken auf und übergeben Sie den Pfad zur OAuth 2.0-Anmeldeinformationsdatei. Diese Methode gibt ein Zugriffstoken zurück, das für die Authentifizierung erforderlich ist.

  2. Erstellen Sie eine Instanz von ImapClient mit den Parametern.

    Host: "imap.gmail.com" gibt den IMAP-Server für Gmail an.

    Port: 993 ist der sichere Port für IMAP über SSL.

    Benutzername: Ihre Gmail-E-Mail-Adresse.

    Zugriffstoken: Das Zugriffstoken, das von der Methode GetAccessToken abgerufen wurde.

    OAuth verwenden: Der Parameter true zeigt an, dass OAuth für die Verbindung verwendet wird.

    Sicherheitsoptionen: SecurityOptions.SSLAuto gewährleistet eine automatische SSL-Verhandlung.

  3. Rufen Sie die Methode SelectFolderAsync auf, um den Mailbox-Ordner anzugeben, auf den zugegriffen werden soll – in unserem Fall den Posteingang.

  4. Rufen Sie die Methode ListMessages auf, um eine Liste von E-Mail-Nachrichten aus dem ausgewählten Ordner abzurufen. Wir geben die Anzahl der abgerufenen Nachrichten aus und iterieren durch jede Nachricht, um die Betreffzeile auszudrucken.

Hier ist der C#-Code, um eine Verbindung zu Gmail über IMAP herzustellen:

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

Sie haben jetzt erfolgreich eine Verbindung zu Gmail über IMAP unter Verwendung von C# und der Aspose.Email .NET-Bibliothek hergestellt.

Sicherlich sind die Methoden des ImapClient, die im obigen Beispiel verwendet werden, nur einige. Aspose.Email deckt nahezu alle Funktionalitäten des IMAP-Protokolls auf der Clientseite ab. Dazu gehören Funktionen wie Ordnerverwaltung, Nachrichtenabruf und Umgang mit Anhängen. Darüber hinaus bietet es Unterstützung für erweiterte Operationen wie das Suchen und Filtern von Nachrichten.

Fazit

In diesem Artikel haben wir Techniken für die Arbeit mit Gmail über das IMAP-Protokoll mithilfe von C# untersucht. Wir haben behandelt, wie man OAuth 2.0-Anmeldeinformationen von der Google Cloud Console erhält, Zugriffstoken abruft und sich sicher mit Gmail verbindet, um E-Mails zu verwalten.

Durch die Nutzung der bereitgestellten Codebeispiele können Sie Gmail-Funktionalitäten in Ihre Anwendungen integrieren, was eine effiziente E-Mail-Abfrage und -Verwaltung ermöglicht.

Die Codebeispiele werden von der fortschrittlichen und robusten Aspose.Email für .NET-Bibliothek bereitgestellt, die auch eine Reihe von kostenlosen Ressourcen bietet:

  • eine umfassende Dokumentation,
  • eine umfangreiche API-Referenz,
  • eine Vielzahl von kostenlosen Online-Tools und Apps, um den Entwicklungsprozess zu verbessern,
  • ein kostenloses Support-Forum für Community-Hilfe und Einblicke,
  • den Blog, um über die neuesten Tipps und Tutorials informiert zu bleiben.

Diese Ressourcen sind von unschätzbarem Wert, um das Potenzial der Bibliothek in Ihren Projekten zu maximieren.

Siehe auch