Dafür bauen wir einen Use Case, indem wir Attachments von folgendem E-Mail-Account lesen:
Diese Attachments werden dann von der nachfolgenden Azure Logic App verarbeitet:
Signierte E-Mails werden vom Logic App als eine einzige angehängte Datei namens smime.p7s erkannt. Dies weist darauf hin, dass unseres E-Mail ein MIME ist. MIME steht für Multipurpose Internet Mail Extensions und erweitert die E-Mail-Nachrichten, indem sie mehr als nur ASCII beinhalten dürfen, z.B. Bilder, Videos, Dateien usw. MIME können signiert, verschlüsselt oder jede Kombination dieser zwei sein. Wir werden in unserem Beispiel nur signierte unverschlüsselte E-Mails betrachten.
MIME verarbeiten
In unserer Logic App wird der MIME Inhalt in einer Function App, die per HTTP getriggert wird, verarbeitet, da der Office 365 Connector mit signierten E-Mails out of-the-box nicht umgehen kann. Wir benutzen dafür das MimeKit Library, welches von Microsoft empfohlen wird.
Wenn unsere Logic App das vorige E-Mail verarbeitet, wird der MIME Inhalt zu unser Function App folgendermaßen weitergegeben:
Unsere Function App sieht dann mehr oder weniger wie folgt aus. Sie wird dann von der nachfolgenden Azure Logic App verarbeitet:
Besonders wichtig sind folgende Codezeilen:
Hier wird der Stream geparst und davon eine Mime-Nachricht erzeugt.
Da die Attachments in Base64 kodiert sind, muss ihre Darstellung zu einem Stream gewandelt werden. Aus diesem Stream kann man dann die Dateien speichern, in einen Azure Blob Storage hochladen oder weiterverarbeiten.
Und hier noch ein für dich vorbereiteter Playground:
- MIME Inhalt des Beispiels im Post (mimerequest.txt)
- Ein dotnet interactive Notebook mit Beispiel Code (mime_playground.ipynb)
Viel Spaß damit!
Enrique Castaneda