Überblick über die Google Mail-API
Die Google Mail-API ist eine RESTful-API, die für den Zugriff auf Google Mail-Postfächer und das Senden von E-Mails verwendet werden kann. Für die meisten Webanwendungen (einschließlich mobiler Anwendungen) ist die Gmail-API die beste Wahl für den autorisierten Zugriff auf die Gmail-Daten eines Benutzers.
Die Gmail-API bietet Ihnen einen flexiblen, RESTful-Zugriff auf den Posteingang des Benutzers mit einer natürlichen Schnittstelle zuThreads
,Messages
,Labels
,Drafts
,History
, und.Settings
.In der modernen Sprache Ihrer Wahl kann Ihre App die API nutzen, umGmail-Funktionen wie:
- Lesen von Nachrichten aus Google Mail
- Senden von E-Mail-Nachrichten
- Ändern der Kennzeichnungen von Nachrichten und Threads
- Suchen nach bestimmten Nachrichten und Threads
- Erstellen von Filtern zum automatischen Kennzeichnen, Nachrichten automatisch zu kennzeichnen, weiterzuleiten oder zu archivieren
Alles, was Sie für die Verwendung der Gmail-API benötigen, ist die Client-Bibliothek für die von Ihnen gewählte Sprache und eine Anwendung, die sich als Gmail-Benutzer authentifizieren kann.
Typische Anwendungsfälle
Die Gmail-API kann in einer Vielzahl von verschiedenen Anwendungen verwendet werden, darunter typischerweise:
- Extrahieren, Indizieren und Sichern von E-Mails im Lesezugriff
- Verwaltung von Labels (Hinzufügen/Entfernen von Labels)
- Automatisierter oder programmgesteuerter Nachrichtenversand
- Migrieren von E-Mail-Konten von anderen Anbietern
- Setzen von standardisierten E-Mail-Signaturen für Benutzer in einer Domäne
Wie finde ich mehr heraus?
Nutzen Sie diese Dokumentation, um noch heute mit der Erstellung einer Google Mail-App zu beginnen:
- Die Client-Bibliotheken stehen in mehreren Sprachen zum Download bereit und vereinfachen API-Anfragen.
- Die Themen des Entwicklerhandbuchs helfen Ihnen, besser zu verstehen, wie Sie bestimmte Anwendungsfälle implementieren.
- Die API-Referenz enthält Details zu jeder Ressource und Methode der Gmail-API.
API-Übersicht
Die Gmail-API ist ein Webdienst: Sie verwendet eine RESTful-API mit einer JSON-Nutzlast.Dieser Abschnitt bietet einen allgemeinen Überblick über die API-Funktionen und ihre Verwendung. Ausführliche Informationen zu den Ressourcen und Methoden der API finden Sie in der GmailAPI-Referenz.
Schlüsselressourcentypen
Die Gmail-API bietet mehrere Ressourcentypen:
- Nachrichten
- Etiketten
- Entwürfe
- Verlauf
- Threads
- Einstellungen
Nachrichten und Etiketten sind die Grundeinheiten einer Mailbox. Entwürfe, Verlauf und Threads enthalten jeweils eine oder mehrere Nachrichten mit zusätzlichen Metadaten.
Nachrichten sind unveränderlich: Sie können nur erstellt und gelöscht werden. Außer den Labels, die auf eine bestimmte Nachricht angewendet werden, können keine Nachrichteneigenschaften geändert werden.
Labels dienen als Hauptmittel zur Kategorisierung und Organisation von Nachrichten und Threads. Ein Label steht in einer Many-to-many-Beziehung zu Nachrichten und Threads: Auf eine einzelne Nachricht können mehrere Labels angewendet werden, und ein einzelnes Label kann auf mehrere Nachrichten oder Threads angewendet werden. Es gibt auch zwei Arten von Labels: system
und user
. Systemkennzeichnungen wie INBOX
, TRASH
oder SPAM
werden intern erstellt und können nicht erstellt, gelöscht oder geändert werden. Einige System-Labels, wie z. B. INBOX
, können jedoch auf Nachrichten und Threads angewendet oder daraus entfernt werden. Benutzer-Labels können vom Benutzer oder einer Anwendung hinzugefügt, gelöscht oder geändert werden.
Entwürfe stellen nicht gesendete Nachrichten dar. Das Senden eines Entwurfs löscht automatisch den Entwurf und erstellt eine Nachricht mit dem Systemlabel SENT
.
Die Historie ist eine Sammlung kürzlich geänderter Nachrichten in chronologischer Reihenfolge.
Die Historie ist als leichtgewichtige Methode zur Synchronisierung eines Clients gedacht, enthält aber in der Regel nur Aufzeichnungen über Änderungen innerhalb der letzten 30 Tage. In einigen Fällen, z. B. wenn ein Client zu veraltet ist, sollte der Client manuell synchronisiert werden.
Threads sind Sammlungen von Nachrichten, die eine Unterhaltung darstellen. Wie Nachrichten können auch Threads mit Labels versehen werden. Im Gegensatz zu Nachrichten können Threads jedoch nicht erstellt, sondern nur gelöscht werden. Nachrichten können jedoch in einen Thread eingefügt werden.
Einstellungen steuern, wie sich Funktionen von Google Mail für einen Benutzer verhalten. Einstellungen sind verfügbar für POP- und IMAP-Zugriff, E-Mail-Weiterleitung, Filter, automatische Urlaubsantworten, Sende-As-Aliase, Signaturen, Delegierte und Sprache.
Authentifizierung und die Gmail-API
Wie andere Google REST-APIs verwendet die Gmail-APIOAuth 2.0, um Authentifizierung und Autorisierung zu handhaben. Ihre Anwendung gibt einen oder mehrere Bereiche an: Strings, die Ressourcen identifizieren, auf die sie zugreifen muss. Diese Bereiche werden zusammen mit einer Reihe von Token verwendet, um den Zugriff eines Benutzers auf Ressourcen zu sichern.Ein Bereich steht für eine bestimmte Form des Zugriffs auf eine einzelne Ressource oder eine Gruppe von Ressourcen, zum Beispiel:
- Lesen einer Nachricht aus Google Mail (
https://www.googleapis.com/auth/gmail.readonly
) - Ändern von Kennzeichnungen, die einem Thread oder einer Nachricht zugewiesen wurden (
https://www.googleapis.com/auth/gmail.modify
) - Senden einer Nachricht im Namen eines Nutzers (
https://www.googleapis.com/auth/gmail.compose
)
Obwohl Sie die Autorisierungsaufrufe des Webdienstes explizit kodieren können, sollten Sie Ihre App in der Regel vereinfachen, indem Sie die Google-API-Clientbibliotheken verwenden, die für viele Programmiersprachen verfügbar sind.
Weitere Informationen zur Verwendung von auth mit der Gmail-API finden Sie unterAutorisieren Ihrer App mit Gmail.
Bereiche
Die Gmail-API unterstützt eine Reihe von fein abgestuften Autorisierungsbereichen, um nur die erforderliche Zugriffsebene zuzulassen. Durch die Anforderung der erforderlichen Mindestzugriffsstufe fühlen sich die Benutzer sicherer, wenn sie den Zugriff auf ihr Postfach gewähren.
Beispiel für einen Anwendungsfall
Betrachten Sie den folgenden Anwendungsfall: Ausdrucken einer Seite mit Threads für den aktuell authentifizierten Benutzer (z. B. in einem Fenster für die letzten Nachrichten).Um dies zu erreichen, würde Ihre Anwendung die folgenden Schritte ausführen:
- Authentifizieren Sie sich als Benutzer, indem Sie den Bereich
https://www.googleapis.com/auth/gmail.readonly
verwenden. - Aufruf der API-Methode.
GET https://www.googleapis.com/gmail/v1/users/<userId>/threads
- Verarbeiten Sie die zurückgegebene Liste der Threads in Ihrer Anwendung.
Für konkreten Beispielcode lesen Sie den Quickstart für die Sprache Ihrer Wahl.
Gemeinsame Verwendungen
Dieser Abschnitt bietet einen Überblick darüber, wie einige häufige Anwendungsfälle implementiert werden können. Weitere Details finden Sie in den Entwicklerhandbüchern.
Senden von Gmail-Nachrichten
E-Mails werden als base64url-kodierte Strings innerhalb der raw
Eigenschaft einer Nachricht gesendet. So erstellen und versenden Sie eine Nachricht:
- Erstellen Sie den E-Mail-Inhalt auf eine geeignete Art und Weise, die von der verwendeten Programmiersprache abhängen kann.
- Erstellen Sie eine base64url-kodierte String-Darstellung dieses Inhalts.
- Erstelle eine neue Nachrichten-Ressource und setze ihre
raw
Eigenschaft auf den base64url-String, den du gerade erstellt hast. - Rufe
messages.send
auf, um die Nachricht zu senden.
Abrufen von empfangenen E-Mails
Gegeben die ID einer E-Mail, kannst du den Inhalt mit derget
Methode der Users.messages
Ressource abrufen.
Wenn Sie eine Nachricht abrufen, können Sie das Nutzdatenformat für die Antwort angeben.FULL
(Standard) gibt die gesamte geparste Nachricht im payload
Feld zurück.MINIMAL
gibt nur die Metadaten wie Bezeichner und Beschriftungen zurück.RAW
gibt die Daten als base64url-kodierte Zeichenkette in der raw
Eigenschaft zurück.
Mail-Änderungshistorie
Nachrichtenänderungen werden durchHistory objects
dargestellt. Mit der Eigenschaftstart_history_id
können Sie festlegen, ab welchem Zeitpunkt die Änderungen zurückgegeben werden sollen. Einige Änderungen können sich auf mehr als eine Nachricht auswirken, so dass die Änderungshistorie mehrere Nachrichten enthält.
Label-Verwaltung
Etiketten, die auf einen Thread angewandt werden, werden auch auf alle Nachrichten innerhalb des Threads angewandt.Wenn ein Etikett gelöscht wird, wird es aus allen Threads und Nachrichten entfernt, auf die es angewandt wurde. Die Eigenschaft messageListVisibility
wird verwendet, um festzustellen, ob Nachrichten mit diesem Label in der Nachrichtenliste erscheinen. Ebenso wird die EigenschaftlabelListVisibility
verwendet, um festzustellen, ob das Label in derLabel-Liste erscheint. Sie können die Methodemessages.modify
oderthreads.modify
verwenden, um die auf Nachrichten bzw. Threads angewendeten Labels zu ändern.
Leave a Reply