COM-Schnittstelle Outlook

E-Mail-Versand


Sofern Outlook der Standard E-Mail-Client ist, ersetzt das Lua-Skript "MailSendCOM.lua" den traditionellen MAPI-Aufruf.
Wenn ein Fehler beim Aufruf oder im Skript auftritt, oder Outlook nicht der Standard E-Mail-Client ist, dann findet ein Fallback auf die alte MAPI-Schnittstelle (Simple MAPI) statt.

Im Vergleich zur MAPI-Schnittstelle ist es mit COM möglich, sowohl ein 32-bit als auch ein 64-bit Outlook anzusprechen.
Andere E-Mail-Clients, wie zum Beispiel Thunderbird, lassen sich nicht über COM ansprechen. Hier ist steht lediglich Simple MAPI zur Verfügung.

Werden kundenspezifische Anpassungen am "MailSendCOM.lua" Skript benötigt, so kann im Systemschalter SLT_MAPI_SCRIPT eine Kopie des Skriptes zugewiesen werden.
Das Original-Skript darf nicht verändert werden, da dies bei Änderungen durch Updates wieder überschrieben wird.

Das Skript stellt mithilfe der mit syslog.ERP ausgelieferten Bibliothek "LuaCOM" eine Verbindung zur Outlook-Installation des Rechners her und erstellt eine neue E-Mail.
Hierzu müssen die Lua-Module für syslog.ERP vollständig installiert sein, siehe Erweiterung durch Skriptsprache Lua.

Hiermit lassen sich diverse Anpassungen am Verhalten des E-Mail-Aufrufes oder am Inhalt der E-Mail vornehmen.
Wenn es sich um einen Vertriebs- oder Einkaufsformular-Druck handelt, sollte der E-Mail-Inhalt allerdings besser über E-Mail-Anpassung beim Formulardruck angepasst werden.

Für Signaturen, siehe E-Mail Signaturen.

Globale Variablen (read-only)

  • mail_content.to
  • mail_content.cc
  • mail_content.bcc
  • mail_content.subject
  • mail_content.body
  • mail_attach[#].filename

Modaler Aufruf

Standardmäßig wird das Outlook-Fenster nicht modal aufgerufen, das bedeutet das aufrufende Programm und Outlook warten nicht auf das Schließen des Fensters.
Wenn der Aufruf modal geschehen soll, muss folgender Parameter auf true gesetzt werden.

local modal = true
mailItem:Display( modal )

HTML-Format

Wenn E-Mails im HTML-Format sein sollen, muss das BodyFormat gesetzt und stattdessen HTMLBody verwendet werden. Dasselbe gilt für das RTF-Format mit RTFBody.

-- Body im HTML-Format
mailItem.BodyFormat = outlook.BodyFormat.HTML
mailItem.HTMLBody = mail_content.body

HTML-Signatur hinzufügen

Wenn die E-Mail mit einer HTML-Signatur sein soll, muss das richtige Body Element ermittelt werden und hinzugefügt werden.

-- Body im HTML-Format
mailItem.BodyFormat = outlook.BodyFormat.HTML

-- E-Mail anzeigen
local modal = false
mailItem:Display( modal )

-- Start und Ende des <body> Element ermitteln
local body = mailItem.HTMLBody
local bodyIndex = body:find( "<body " )
local bodyIndexEnd = body:find( ">", bodyIndex )

-- Zusätzlichen Text an den Anfang der E-Mail (vor Signatur) einfügen
mailItem.HTMLBody = body:sub(1, bodyIndexEnd) .. str.toUtf8( mail_content.body ) ..body:sub(bodyIndexEnd + 1)

Direkt-Versand

E-Mails können auch ohne Outlook-Fenster direkt über Outlook versandt werden.
Hierzu muss die Send()-Methode anstatt der Display()-Methode verwendet werden.

-- E-Mail direkt versenden
mailItem:Send()