Konfiguration des BizTalk SMTP-Adapter mittels eines dynamischen Ports

Wie man einen dynamischen BizTalk-SMTP-Send-Port konfiguriert und Empfänger sowie Mail-Parameter per Message-Assignment- und Expression-Shape setzt.

Zum Verschicken von Mails aus einer BizTalk-Orchestration an unterschiedliche Empfänger, bietet sich ein “Dynamic Send Port” an. Die Sende-Parameter können direkt in der Orchestration gesetzt werden.

Dazu braucht man ein “Message Assigment”- und ein “Expression”-Shape.

Im “Message Assigment”-Shape werden die Eigenschaften für den SMTP-Adapter gesetzt:

msgSend(SMTP.CC) = "xyz@sample.com; ...";
msgSend(SMTP.Subject) = "TESTMAIL: blabla";
msgSend(SMTP.From) = "BizTalk@sample.com";
msgSend(SMTP.SMTPHost) = "smtp.sample.com";
msgSend(SMTP.SMTPAuthenticate) = 0;

Der Empfänger wird als URI-Adresse des Adapters als Eigenschaften des Ports im “Expression”-Shape konfiguriert:

portSend(Microsoft.XLANGs.BaseTypes.Address)=
  "mailto:abc@sample.com"

Wenn man den Absender aus einer anderen Message ziehen möchte, ist das am einfachsten per XPath-Zugriff nach folgendem Beispiel:

portSend(Microsoft.XLANGs.BaseTypes.Address) =
  "mailto:" +
  (System.String) xpath(msgSend, "string(/*[local-name()='Root' and namespace-uri()='http://SampleNamespace']/*[local-name()='To' and namespace-uri()=''])");

für ein XML-Dokument nach dem Schema

<Root>
  blabla
  <To>abc@sample.com</To>
</Root>