2016-05-31 11 views
0

Ich möchte einen vollständigen Posteingang (E-Mail-Nachrichtentext und Anhänge) von meinem Google Mail herunterladen. Unter Verwendung von Nachrichten-IDs kann ich Gmail.Message Objekte abrufen, aber diese scheinen nur Snippets (etwa 200 Zeichen) zu enthalten.Wie erhalte ich mithilfe einer API vollständige Nachrichten und Anhänge aus meinem Google Mail-Posteingang?

Gibt es für C# eine Möglichkeit, den gesamten Posteingang im XML-Format mithilfe der Google Mail-API abzurufen?

+0

Was ist der API-Aufruf, den Sie genau machen? Können Sie bitte die HTTP-Anfrage stellen? – gretro

Antwort

0

Nach the documentation können Sie

GET https://www.googleapis.com/gmail/v1/users/userId/messages/id

Ist das der Anruf verwenden Sie verwenden? Er sagt, das Standardformat ist Full:

„voll“: Gibt die vollständigen E-Mail-Nachrichtendaten mit dem Körpergehalt im Nutzfeld analysiert; Das rohe Feld wird nicht verwendet. (Default)

für Anlagen bekommen Sie Users.messages.attachments versuchen:

GET https://www.googleapis.com/gmail/v1/users/userId/messages/messageId/attachments/id

Aber dafür werden Sie die Anlage ID benötigen. Vielleicht möchten Sie die User.messages overview überprüfen, die die verfügbaren Daten zeigt, vielleicht können Sie die Payload Anrufe versuchen?

1

Mit Blick auf die API müssten Sie eine Anfrage an /users/me/threads dann an users/me/threads/<id> Innerhalb dieser Antwort gibt es einen body.data Wert, der Base 64 codiert ist. Ich bin nicht 100% sicher mit dem C# API, aber ich nehme an, dass Sie so etwas wie tun würden:

var request = service.Users.Threads.List("me"); 

var labels = request.Execute().Threads; 
foreach(var thread in lables){ 
    var threadReqeust = service.Users.Threads.Get("me", thread.Id); 
    var data = threadReqeust.Execute(); 
    //you have your entire message now 
} 

(Nehmen Sie zur Kenntnis, dass dies halb pusudo Code, wie ich dies mit dem gmail api nicht überprüft habe)

(https://developers.google.com/gmail/api/v1/reference/users/threads/list) (https://developers.google.com/gmail/api/v1/reference/users/threads/get) "ein Befestigungs ID vorhanden ist, wenn die Körperdaten in einem separaten Befestigungs enthalten ist."

Eine andere Möglichkeit besteht darin, sich immer mit IMAP einzuloggen (mit ImapX oder ähnlichem) und Daten auf diese Weise zu sammeln, aber die Verwendung der API wäre besser.

+0

Es ist ein Weg, dem ich folgte. Aber es gibt kein Feld "Körper" nur "Schnipsel" –

+0

Versuchen Sie, die Format-Eigenschaft in der Anfrage zu betrachten (https://developers.google.com/gmail/api/v1/reference/users/threads/get) Auch die Liste (der Nachrichten) innerhalb des Thread-Elements (https://developers.google.com/gmail/api/v1/Referenz/Benutzer/threads # Ressource-Darstellungen) –

+0

Wie konfiguriert man die Format-Eigenschaft? Ich fand Format-Eigenschaft: var getReq = UsersResource.MessagesResource.GetRequest.FormatEnum.Full; Aber wie man Methode Get? Ich muss den Service nutzen. Recht? service.Users.Messages.Get ("me", item.Id) .Execute() - aber Methode erhalten keine Überladungen mit dem dritten Parameter wie Format. –