Dynamics NAV: E-Mail mit Zeilenumbruch versenden (CodeUnit 397)

Microsoft Dynamics NAVWer mit Dynamics NAV arbeitet kommt früher oder später mal in die Situation E-Mails versenden zu müssen. Hierfür bietet Dynamics NAV/Navision von Hause aus zwei CodeUnits an dieses schnell zu realisieren.

Aber wie bindet man nicht druckbare Zeichen, z.B. Zeilenumbrüche, in E-Mails ein?

Die CodeUnits „Mail“ und „SMTP Mail“ in Dynamics NAV

Dynamics NAV, auch bekannt unter dem Namen Navision, biete Softwareentwicklern zwei Möglichkeiten E-Mails zu versenden. Zum einen gibt es die relativ neue Codeunit „SMTP Mail“ (ID 400), die es seit Navision 5 gibt, und die älter CodeUnit „Mail“(ID 397).

Einen Zeilenumbruch mit „SMTP Mail“ (ID 400) zu realisieren ist ganz einfach. Da es einen Parameter für das HTML-Format gibt, kann man einfach bei setzen dieses Parameters die bekannten HTML-Tags nutzen.

Bei der älteren CodeUnit mit der ID 397 sieht es etwas anders aus.

E-Mails versenden mit der CodeUnit 397

Die CodeUnit Mail (397) stellt die Funktion NewMessage bereit, mit der man E-Mails über das lokal installierte E-Mail-Programm verschicken kann. Die Funktion hat die folgenden sechs Parameter:

  1. ToName (Text  80) – Email Empfänger
  2. CCName (Text  80) – CC Email Adresse
  3. Subject (Text  260) – Betreff
  4. Body (Text  260) – Text
  5. AttachFileName (Text  260) – Dateiame für den Anhang
  6. OpenDialog (Boolean)  – TRUE/FALSE, soll Outlook vor dem Senden gestartert werden

Wie erzwingt man aber nun in dem Text der E-Mail einen Zeilenumbruch?

Dies ist einfacher als man denkt, man muss nur den ASCII-Code kennen.

Zunächst erstellt Ihr unter Globalen Variablen oder Lokalen Variablen (je nach Wunsch) eine Textvariable CRLF. Diese muss die Länger 2 haben.

Variablendeklaration

  • Name: CRLF
  • Datatype: Text
  • Lenght: 2

Als zweites weißt Ihr dieser Variable dann die ASCII-Zeichen 13 und 10, die den Zeilenumbruch darstellen, zu. Das war es schon. Nun könnt Ihr die Text-Variable CRLF überall einsetzen, wo Ihr einen Zeilenumbruch benötigt.

Hier seht Ihr nochmal den C/AL-Code zum Versenden einer E-Mail mit der CodeUnit 397. Mail ist hierbei ein Objekt vom Datatyp Codeunit und dem Subtype Mail (ID 397). Die anderen sind Textvariablen.

CRLF := '';
CRLF[1] := 13;
CRLF[2] := 10;
BodyLine := 'Hallo Welt!' + CRLF + 'Der Softwarentwickler Blog';
Mail.NewMessage(Reciever,CcName,SubjectLine,BodyLine,AttachedFileName,FALSE);

Wie Ihr seht ist ein Zeilenumbruch kein Hexenwerk und das Versenden von E-Mails mit Dynamics NAV bzw. der CodeUnit 397 kinderleicht. Das einzige, was bei dieser CodeUnit zu bedenken ist, ist das Vorhandensein des E-Mail-Clients (Microsoft Outlook). Wer dies nicht möchte muss auf die CodeUnit 400 (SMTP Mail) zurückgreifen.