2017-10-25 2 views
2

Ich habe eine Logic App erstellt, in der ich E-Mails von einem Google Mail-Konto erhalte und den Anhang der E-Mail an meine Rest-API senden möchte. Aber ich verstehe nicht, welchen Typ ich als Anhang bekomme. Ich habe gesehen: Wenn ich den Auslöser von Outlook.com verwende, bekomme ich einen base64String, aber von Gmail bekomme ich etwas anderes. Gibt es ein Beispiel, wie Sie mit Google Mail-Anhängen arbeiten können.So arbeiten Sie mit Google Mail-Anlagen in Azure Logic App

enter image description here

+0

Können Sie bitte das erwartete Verhalten angeben? Welches Format müssen Sie an den Endpunkt senden? –

+0

Ist einer meiner Endpunkte, damit ich es entscheiden kann.Aber normalerweise benutze ich base64 Strings – cpiock

Antwort

2

Danke für den Input SahadevSinh. Ich habe meinen Workflow wie folgt geändert: enter image description here

Und in meinem Endpunkt ich dies tun:

public async System.Threading.Tasks.Task<MissionOutputDto> CreateMissionFromMail(HttpRequestMessage req) 
    { 
     string body = await req.Content.ReadAsStringAsync(); 
     dynamic fileData = JObject.Parse(body); 
     string email = fileData.email; 
     JArray files = fileData.files; 

     string fileString = null; 
     string fileName = null; 
     string mimeType = null; 

     foreach (dynamic file in files) 
     { 
      fileString = file.ContentBytes; 
      fileName = file.Name; 
      mimeType = file.ContentType; 
     } 
1

i einem Beispiel haben Sie zu zeigen, wie Sie gmail Befestigungs

enter image description here

1) erhalten E-Mail-Trigger erhalten können:

Step 1 details

2) erhalten E-Mail-Details:

Step 2 details

3) passieren Befestigung Details in HTTP-Anforderung Step 3 details

[ 
    { 
    "Name": "test (2).txt", 
    "ContentBytes": "dGVzdA==", 
    "ContentType": "text/plain; charset=\"US-ASCII\"; name=\"test (2).txt\"", 
    "ContentId": "", 
    "Size": 4 
    }, 
    { 
    "Name": "test (2) - Copy.txt", 
    "ContentBytes": "dGVzdA==", 
    "ContentType": "text/plain; charset=\"US-ASCII\"; name=\"test (2) - Copy.txt\"", 
    "ContentId": "", 
    "Size": 4 
    } 
] 

"contentbyte": ist base64Strig

WebAPI Änderungen:

Sie eine weitere Klasse erstellen müssen rufen Sie diese Anlage Daten

public class GmailAttechment 
    { 
     public string FileName { get; set; } 
     public string ContentBytes { get; set; } 
     public string ContentType { get; set; } 

     public string ContentId { get; set; } 

     public int Size { get; set; } 

    } 

diese Klasse benutzen Sie attachment Details aus Ihrer Anfrage

  1. hinzufügen oben Klasse in Ihre WebAPI Anforderungsparameter

    public class GetEmailDetails { public string Datei abrufen { bekommen; einstellen; }

    public string fileName { get; set; } 
    
        public string from { get; set; } 
    
        public string mimeType { get; set; } 
        **public List<GmailAttechment> GmailAttechmentList { get; set; }** 
    } 
    
    1. Beispiel Handlungs

    public void GetGmailDetails (GetEmailDetails gmailDetails) { foreach (var Artikel in gmailDetails.GmailAttechmentList) { // Hier können Sie den gesamten Inhalt der Datei erhalten string base6String = item.ContentBytes; } }

+0

Ich bin mir nicht sicher, aber ich kann nicht einen dynamischen Inhalt mit dem Namen Anhang in der http-Anfrage – cpiock

+0

verwenden bitte überprüfen Sie die Antwort zu bearbeiten und noch haben Sie Zweifel nur lässt mich wissen, weil ich meine wertvolle Zeit zu lösen Dieses Problem –

+0

Ich habe neue Codebeispiel für Sie verstehen, wie Sie JSON in der Liste zu analysieren –

Verwandte Themen