Lade...
 

EMail- und Fax-Lösungen

Programmierung von Mail- und Fax-Lösungen

ClassiX® unterstützt von sich aus keine Mail- oder Fax-Protokolle. Um trotzdem von ClassiX® aus eine Email oder ein Fax verschicken zu können, müssen daher fremde Applikationen integriert werden. Dies geschieht über OLE-Automation, d.h. die einzubindende Anwendung muss über OLE-Automation steuerbar sein. Im folgenden wird Outlook als Email- und Fax-Client verwendet. Auf ähnliche Art lässt sich jedoch auch Lotus-Notes o.ä. einbinden.

Outlook bietet ein umfangreiches Objektmodell zur Programmierung an (ähnlich MAPI – Mail Applikation Programming Interface), welches unabhängig davon ist, ob Outlook als alleinstehendes Mailprogramm arbeitet oder an einen Exchange-Server angebunden ist. Für genauere Informationen dazu siehe bspw. 1 oder 2.

Verschicken einer EMail

Um von Outlook aus programmatisch eine Email zu verschicken sind folgende Schritte nötig:

  1. Besorgen des Outlook-Application-Objekts
  2. Einloggen
  3. Mail erzeugen
  4. Adressat(en) setzen
  5. Subject, Body und ggf. Attachment setzen
  6. Ansehen  (Vorschau)
  7. abschicken
  8. abmelden

1. Besorgen des Outlook-Application-Objekts
Das Applikations-Objekt bietet Methoden zur Steuerung der Anwendung, in diesem Fall also Methoden, um bspw. durch die Outlook-Ordner zu navigieren, neue Mails oder Kontakte zu erzeugen oder aber auch, um die Outlook-Oberfläche zu verändern.

    Var(olApp)
    CreateTransObject(CX_COM_OBJECT) -> olApp 
    "Outlook.Application" olApp Call(CreateFromProgID) 

Damit wurde ein Objekt vom Typ Outlook.Application erzeugt. Die Methode CreateFromProgID ist nicht in der Outlook-Hilfe zu finden, da sie eine Methode der ClassiX®-Klasse CX_COM_OBJECT ist.

2. Einloggen
MAPI erfordert, dass sich ein Benutzer – auch ein Programm, welches irgendetwas machen möchte ist ein Benutzer – zunächst einloggt und damit eine Sitzung eröffnet. Dies geschieht über den MAPI-Namespace:

    Var(olSession)
    "MAPI" olApp Call(GetNamespace) -> olSession
    olSession Call(Logon)

Der Logon-Befehl akzeptiert auch Parameter zur (interaktiven) Profilauswahl und ein Passwort. In der oben gezeigten Version wird das Standardprofil verwendet.

3. Mail erzeugen
Jedes Element, gleich ob Mail, Kontakt oder Notiz, wird mit der Methode CreateItem des Application-Objekts erzeugt. Als Parameter wird der Typ in Form eines Integers übergeben. Eine Mail wird durch den Typ olMailItem (0) erzeugt:

    Var(olMail) 0 olApp Call(CreateItem) -> olMail

Das erzeugte Objekt ist vom Typ Outlook.MailItem

4. Adressat(en) setzen
Adressaten werden zunächst in Stringform gesetzt, d.h. die Email-Adresse oder der Name des Empfängers wird gesetzt. Anschließend kann überprüft werden, ob der bzw. alle Empfänger aus Sicht von Outlook gültige Empfänger sind. Dies ist bei SMPT-Adressen (xyz@abc.de) immer der Fall, es sei denn der Internet-Maildienst wurde nicht installiert. Wenn ein Name angegeben wird prüft Outlook, ob ein entsprechender Kontakt bzw. Eintrag im Adressbuch vorhanden und jeweils eine gültige Mailadresse zugeordnet ist.

    Var(olRecipients) olMail Call(GetRecipients) -> olRecipients
    "info@classix.de" olRecipients Call(Add) Drop
    "Egon Hubert" olRecipients Call(Add) Drop
    olRecipients Call(ResolveAll) ifnot {... Error handling ...}

5. Subject, Body und ggf. Attachment setzen
Subject und Body einer Mail werden als einfache Strings gesetzt und können auch so gelesen werden. Soll die Mail im HTML-Format verschickt werden kann alternativ HTMLBody anstelle von Body verwendet werden. 

    "irgendein Betreff" olMail Call(PutSubject)
    "irgendein Inhalt" olMail Call(PutBody)

Attachments werden als Dateinamen angehängt:

    "c:\\irgendwo\\irgendwas.doc" olMail Call(GetAttachments) Call(Add)

6. Ansehen (Vorschau)
Um die verbundene Applikation (Outlook, Notes, etc.) als in den Vordergrund zu bringen, kann folgende Methode aufgerufen werden:

    olMail Call(Display)

7. Abschicken
Zum Abschicken wird einfach die Methode Send von dem MailItem aufgerufen:

    olMail Call(Send)

Es gibt keine Bestätigung für das Absenden einer Mail. Möchte man so etwas haben müsste ein Plugin in Outlook oder für Exchange geschrieben werden, das beim Versenden eine Meldung für ClassiX® generiert.

8. Abmelden
Der Namespace bietet eine Methode zum ausloggen. Zwar passiert nichts, wenn man sich nicht ausloggt, aber um sauber zu entwickeln empfiehlt es sich:

    olSession Call(Logoff)

Verschicken eines Fax

Um mit Hilfe von ClassiX® Faxe zu verschicken muss ebenfalls eine OLE-Automation fähige Fax-Anwendung vorhanden sein. Neben den einfachen Druckertreibern, die es erlauben anstelle eines Druckers ein Modem, eine ISDN-Karte oder einen zentralen Fax-Server anzusteuern und so sehr einfach Faxe zu verschicken, bieten Exchange und Outlook sehr elegante Lösungen an.

Grundsätzlich unterstützen Outlook und Exchange verschiedene Übertragungs- und Adressierungsprotokolle. Neben dem im Internet üblichen SMPT/ werden u.a. auch X.400/X.500-Protokolle unterstützt. Dafür muss lediglich der richtige Dienstprovider installiert werden (bei einer Exchangeinstallation lediglich auf dem Exchange-Server, ansonsten in jeder Outlook-Installation).

Der Dienstprovider versucht anhand der übergebenen Adresse den passenden Empfänger (Kontakt oder Eintrag ins Adressbuch) zu finden und übermittelt die Nachricht an eine der im Empfänger gespeicherten Adressen über installierte Übertragungsprotokolle. Dabei wird die Adresse und das passende Protokoll bevorzugt, welche als Empfangsadresse angegeben wurde. Ist der Empfänger nicht gespeichert, wird die übergebene Adresse auf mögliche Protokolle untersucht (ist z.B. ein @ enthalten handelt es sich wohl um SMTP). Möchte man ein bestimmtes Protokoll verwenden, kann dies in der Form:

[Protokoll:Adresse]

als Empfängeradresse spezifiziert werden. z.B.:

[smpt:max.mustermann@classix.de]

Dadurch wird Exchange/Outlook bekannt gegeben, dass die Adresse zu einem bestimmten Protokoll gehört und die Nachricht darüber verschickt werden soll.

Um faxen zu können muss ein Fax-Provider auf dem Exchange-Server bzw. unter Outlook eingerichtet sein (z.B. GFI-FaxMaker). Die Protokollbezeichnung ist produktabhängig, lautet aber häufig „fax“ oder nach dem Hersteller, z.B. „faxmaker“, so dass eine Komplette Fax-Adresse z.B. so aussehen kann:

„[fax:04020940150]“

 

Um ein Fax zu verschicken wird einfach eine Email an eine solche Adresse verschickt (von ClassiX® aus eine Email verschicken). Dabei übernimmt das sendende Programm das Konvertieren des Inhaltes in das benötigte Grafikformat (Faxe werden als Grafik übermittelt), wobei auch Attachments berücksichtigt werden. Attachments müssen allerdings in einem druckbaren Format vorliegen, d.h. dass das Attachment von dem Konverter geöffnet und gedruckt werden können muss. Wird z.B. ein Acrobat-PDF-File als Attachment verschickt, und der Faxprovider läuft auf einem Exchange-Server, so muss auf diesem ein Acrobat-Reader installiert sein. In der Registry finden sich dann Informationen, wie dieses PDF-File gedruckt werden kann. Je nach Faxprovider müssen diese Einträge angepasst werden.