Empfangen von Attachments vom Contenttype text/xml via POP3

Das Empfangen von Attachments via POP3 Adapter des Microsoft Biztalk Server 2006 ist z.B. mit einer Orchestration (www.commercelab.de/allgemeines/empfangen-von-emails-mit-attachment-und-speichern-der-angefugten-dateien-unter-ihrem-ursprunglichen-namen/) möglich. Für das Empfangen von text/xml Attachments muss im Receive Port in der POP3 Konfiguration das Feld Textteil-Inhaltselement mit dem Wert text/plain gesetzt werden. Mit dieser Einstellung sind alle Arten von Attachments emfpangbar.

Ohne diese Einstellung erhält man den XLANG Fehler mit dem Ausnahmetyp: WrongBodyPartException.

Empfangen von EMails mit Attachment und Speichern der angefügten Dateien unter ihrem ursprünglichen Namen

Das Empfangen von EMails ist mit dem POP3 Adapter des Microsoft Biztalk Server 2006 möglich. Zur Speicherung der beigefügten Dateien unter ihrem Originaldateinamen ist ein kleiner Umweg via einer Orchestration notwendig.

Folgende Prozessbestandteile sind zu definieren:

  1. Erstellung eines neuen Biztalk Projektes mit Hilfe von Visual Studio – Einfügen einer Orchestration
  2. Definition eines unidirektionalen Empfangports mit der Kommunikationsrichtung “Ich empfange Nachrichten immer auf diesem Port” und der Portbindung “Später angeben”
  3. Definition eines unidirektionalen Sendeports mit der Kommunikationsrichtung “Ich sende Nachrichten immer auf diesem Port” und der Portbindung “Später angeben”
  4. Definition des Prozessablaufes und der Variable nCount vom Typ Int32 (Startewert 1)
  5. Kompilieren und Bereitstellen der Orchestration
  6. Erstellen eines Empfangports vom Typ POP3 mit Hilfe des Biztalk Verwaltungsmanagement Tools – Konfiguration des Ports mit den Angaben Ihres POP3 Servers. Wichtig ist hier die Einstellung “MIME Decodierung anwenden” mit Wahr
  7. Erstellen eines Sendeports vom Typ File (z.B) mit Hilfe des Biztalk Verwaltungsmanagement Tools – Konfiguration des Ports. Wichtig ist hier die Verwendung des Makros %SourceFileName%
  8. Aktivieren der Ports, Bindung der Ports an die Orchestration
  9. Starten der Orchestration

cc cc receive pop3 messages

Der Prozessabschnitt GetCount ermittelt die Anzahl der angefügten Attachments und speichert diese in der Variable nCount

//Set the input message to a var of XLang Message type
oXMessage = In;
// Get count
nCount = oXMessage.Count;

Der Prozessabschnitt MessageAssignment wird in der Schleife aufgerufen und übergibt ein Attachment nach dem anderen an den Sende Port. Dabei ist es wichtig, dass der Original Dateiname via MIME.FileName an die File.ReceivedFileName Eigenschaft des SendePort übergeben wird, so dass mit dem Makro %SourceFileName% der Original Dateiname auch wieder verwendet werden kann.

//Get the n'th part and set to a new message
Out = oXMessage[n];
Out(FILE.ReceivedFileName) = Out(MIME.FileName);
// Add to count
n = n + 1

Download der Orchestration