CIB mail technischer Leitfaden

Site: CIB eLearning
Course: CIB mail
Book: CIB mail technischer Leitfaden
Printed by: Guest user
Date: Sunday, 5 May 2024, 10:23 PM

1. Lieferumfang

Die Komponente CIB mail wird als Binärmodul in Form einer separaten DLL ausgeliefert. CIB mail ist auch integraler Bestandteil des CIB documentservers.

Komponente

Softwareumfang

CIB mail

 

WIN32(64)

CibMail32(64).dll            CIB mail-DLL für WIN32(64), Schnittstelle
zur Anwendung

CibMail32(64).lib            Library für CIB mail

CibMail.h            Includedatei für CIB mail

CoMod.h            Allgemeine Includedatei für CoMod Module

 

Unix

libcibmailux.so shared library für Unix(e)

 

 

Im Lieferumfang sind des Weiteren eine Hilfe und Anwendungsbeispiele enthalten.

Systeme

CIB mail ist für folgende Plattformen verfügbar:

  • Windows 32/64Bit
  • Linux(e)
  • SUN Solaris
  • Deka Solaris
  • IBM Aix

weitere Plattformen auf Anfrage.

 

Zusatzmodule

Nach dem bewährten Baukastenprinzip, gibt es zu allen Produkten auch Zusatzkomponenten, die dem Entwickler entweder die technische Integration in seine bevorzugte Architektur erleichtern oder auch den Funktionsumfang der aktuellen Komponente sinnvoll ergänzen.

Alle Produkte sind in separaten technischen Leitfäden ausführlich dokumentiert. Diese Informationen können Sie gerne beim CIB Support anfordern.


CIBrunshell

Die CIB runshell ist ein Kommandozeilentool über das alle CIB Produkte, die in Form von DLLs oder shared libraries ausgeliefert werden, angesteuert werden können.

Mit der CIB runshell ist es insbesondere möglich alle Aufrufparameter ("Properties") zu setzen, die diese einzelnen CIB office Module zur Verfügung stellen.

Mit der CIB runshell kann man Funktionen des CIB mail gezielt ansteuern. Sie eignet sich auch hervorragend für einen Einsatz innerhalb von (Batch)jobs.


JCoMod Wrapper/JCoMod Wrapper-IPC

Mit dem JCoMod Wrapper/JCoMod Wrapper-IPC erhalten Sie eine komplette JAVA/JNI Kapselung, die eine einfache Ansteuerung von CIB mail aus JAVA ermöglicht. Die entsprechenden JAVA/JNI Schnittstellen bieten auch die Möglichkeit, die CIB Komponenten in eigenen Prozessen innerhalb der JAVA VM zu starten.


CoMod.net

Falls Sie CIB mail und andere CIB Module in einer .net-Umgebung einsetzen möchten, fragen Sie uns nach den entsprechenden Schnittstellen. Diese stehen für CIB format/output, CIB smtp/mail, CIB merge, CIB pdf toolbox, CIB pad, CIB view und CIB job in einem gemeinsamen Assembly zur Verfügung.


CIB documentserver/J2EE

Der CIB documentserver dient zur Optimierung des Einsatzes der CIB office Module (CoMod) insbesondere beim Einsatz auf Servern (Dokument und Druckdienste). Mit dem J2EE-Standardpaket des CIB documentserver ist eine schnelle Realisierung - auch komplexer Dokumentanforderungen - im jeweiligen Kundensystem möglich.

Der Aufruf und die Nutzung des CIB documentservers befreit die Entwickler der aufrufenden Anwendung von den Details der jeweiligen technischen Anbindung der CIB docgen Module:

Der Aufruf der Dokumentgenerierung erfolgt mittels einer standardisierten Auftragsbeschreibung im XML-Format, in der die Eingabe, die Ausgaben, Optionen und sogar Daten für CIB merge formal angegeben sind.

Zusätzlich steht dem Anwendungsentwickler ein Framework aus Java-Klassen zur leichteren Einbindung zur Verfügung.


2. Einführung

Die CIB mail Komponente aus dem Paket der CIB office Module stellt Möglichkeiten zum E-Mail-Versand zur Verfügung. Dazu kann entweder (plattformabhängig) die WIN32/64 MAPI-Schnittstelle oder das plattformübergreifend verfügbare SMTP-Protokoll benutzt werden.

Die vorliegende technische Dokumentation gibt einen Überblick über die Einsatzmöglichkeiten für einen schnellen Einstieg in die Thematik.

Dieses Kapitel bietet einen kurzen Überblick über die beiden von CIB mail unterstützten E-Mail-Standards.


Die MAPI-Schnittstelle

Das Messaging Application Programming Interface ist seit Anfang der neunziger Jahre ein Teil von Windows Messaging und damit optionaler Bestandteil von 32- und 64-Bit-Windows. MAPI ermöglicht Mailclients den Zugriff auf die Ressourcen eines Mailservers. Quasi-standardisierte Funktionen der MAPI-Schnittstelle erlauben eine einheitliche Programmierung.

Die MAPI-Schnittstelle wird Anwendungsprogrammen über vier verschiedene Mechanismen zugänglich gemacht. Eine Anwendung verwendet normalerweise nur eine dieser Schnittstellen:

  • Extended MAPI (für umfangreichere MAPI-Anwendungen)
  • Simple MAPI
  • CMC-Schnittstelle
  • CDO-Schnittstelle (objektorientiert)

Die Funktionen für MAPI von CIB mail benutzen die Simple MAPI Schnittstelle.

Es gibt MAPI-Konnektoren für die Messaging-Systeme verschiedener Hersteller.


Der SMTP-Standard

Das Simple Mail Transfer Protocol ist ein IETF-Standard zum Netzwerk-übergreifenden Versand von E-Mails. Der ursprüngliche Standard wurde mehrmals erweitert. CIB mail verwendet SMTP wie in RFC 2821 geregelt. Es wird dabei nicht der gesamte Umfang des SMTP-Standards abgebildet.

SMTP setzt einen SMTP-Server zum E-Mail-Versand voraus. Das Protokoll ist recht einfach gehalten und kann nicht zur Abholung von E-Mails von einem Server verwendet werden, sondern nur zum Versand.


3. Gegenüberstellung von MAPI und SMTP

Dieses Kapitel soll Sie bei der Auswahl des für Ihren Anwendungszweck passenden Mailstandards unterstützen. Zwar sind beide weit verbreitet, aber jeder hat Vor- und Nachteile. CIB mail unterstützt sowohl den Mailversand über die MAPI-Schnittstelle als auch über SMTP.

 

Vorteil

Nachteil

MAPI

Auf dem Client verfügbar, dialogfähig, Authentifizierung wird vom System erledigt

Nur unter Windows verfügbar

SMTP

Schneller, Serverseitig verfügbar, Multiplattform

Nur zum Versenden nutzbar, Authentifizierung durch aufrufendes Programm erforderlich


4. Anwendungsfälle

Die nachfolgend aufgeführten praxisnahen Anwendungsfälle veranschaulichen die vielfältigen Einsatzmöglichkeiten von CIB mail. Sie erheben keinen Anspruch auf Vollständigkeit und zeigen ansatzweise den flexiblen Nutzungsgrad auch im Zusammenspiel mit anderen CIB office Modulen.


Einzel-Mail mit dynamischem Mailtext

Versendet ein einziges Mail von einem Sender an einen einzigen Empfänger mit einem dynamischen Mailtext ohne Anhang. Der Mailtext kann z.B. vorher durch ausgeführte CIB merge und CIB format/output Abläufe aus einem RTF-Rohtext mit eingesetzter Anrede und dynamischer Produktnamensliste zu einem personalisierten PDF Dokument aufbereitet werden.


Einzel-Mail mit externem Attachment

Versendet ein einziges Mail von einem Sender an einen einzigen Empfänger mit einem konstanten Mailtext. Zusätzlich wird ein externes Attachment versandt.


Einzel-Mail mit formatiertem Mailtext

Versendet ein einziges Mail von einem Sender an einen einzigen Empfänger mit einem konstanten Mailtext ohne Anhang. Es wird ein HTML-Mailtext mit einem „load“-Kommando geladen und versandt.


Einzel-Mail mit dynamischem Mailtext und dynamischen Attachments

CIB job erzeugt Mailtexte und Attachments und übergibt diese im Hauptspeicher (per Adressen) an CIB mail und führt dies aus. (Zurzeit nur bei Verwendung des SMTP-Protokolls möglich).


Serienmail ohne Attachment

− als ein Mail an alle User
(konstanter Mailtext, alle Empfänger erscheinen in jeder eMail)

− als ein Mail an alle User
(konstanter Mailtext, nur der jeweilige Empfänger erscheint in jeder eMail, Property UseBulkMail ist gesetzt)

− über einen Mischlauf personalisieren und dann an jeden einzelnen User senden
(dynamischer Mailtext)


Serienmail mit Attachment

− als ein Mail an alle User
(konstanter Mailtext, konstantes Attachment, alle Empfänger erscheinen in jeder eMail)

−  über einen Mischlauf personalisieren und dann an jeden einzelnen User
(dynamischer Mailtext, konstantes Attachment)

− über einen Mischlauf personalisieren und dann an jeden einzelnen User
(dynamischer Mailtext, dynamisches Attachment, z.B. Rechnung)


Mail mit mehreren Attachments, z.B. Bild, PDF, Text

Es handelt sich hierbei um eine Kombination aus den bereits behandelten Varianten.


5. Technische Schnittstellen

CIB mail bietet umfangreiche "Properties" (=Parameter, Eigenschaften) zum Versand von E-Mails. Diese Properties können über die Funktionen CibMailSetProperty und CibMailGetProperty geschrieben und ausgelesen werden.

Dieses Kapitel gibt einen kurzen Überblick über die verfügbare API und deren Parameter. Allgemein gilt, dass man über die Funktion CibMailSetProperty seine gewünschten Parameter in CIB mail setzt und dann eine Funktion CibMailConnect, CibMailSend oder CibMailDisconnect aufruft.

5.1. CibMailJobHandle

typedef
struct tagCibMailJobHandleStruct
{
        /* no data */
} CibMailJobHandleStruct;
typedef CibMailJobHandleStruct* CibMailJobHandle;

Das "Jobinterface" ordnet jedem Mailauftrag der durchgeführt werden soll ein "Auftragshandle" vom Typ CibMailJobHandle zu. Dieses Objekt dient als Stellvertreterobjekt des Auftrags. Sowohl das

  • Setzen und Lesen von Properties (mit CibMailSetJobProperty/CibMailGetJobProperty) als auch das
  • Ausführen des Auftrags (mit CibMailJobConnect, CibMailJobSend, CibMailJobDisconnect) sowie das
  • Abholen von Fehlerinformationen (mit CibMailJobGetError, CibMailJobGetErrorText)

 beziehen sich bei diesen Routinen stets auf ein solches Jobhandle.

Man eröffnet einen Auftrag, indem man ein Jobhandle (mit CibMailJobCreate) erzeugt. Nach dem Setzen der Properties und dem Ausführen der eMail-Übertragung gibt man das Jobhandle wieder frei (mit CibMailJobFree).


5.2. CibMailJobCreate

BOOL EXPORTFUNC CibMailJobCreate (CibMailJobHandle*a_pJob, const char* a_pReserved);

Mit dieser Methode wird ein JobHandle erzeugt, welches dann mit Hilfe von CibMailJobFree wieder freigegeben wird.

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.

Parameter:

Typ:

Variable:

Bedeutung:

CibMailJobHandle

*a_pJob

Handle des auszuführenden Auftrags

char*

a_pReserved

 


5.3. CibMailJobFree

BOOL EXPORTFUNC CibMailJobFree (CibMailJobHandle*a_pJob);

Mit dieser Methode wird ein, mit Hilfe von CibMailJobCreate erzeugtes, JobHandle wieder freigegeben.

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.

Parameter:

Typ:

Variable:

Bedeutung:

CibMailJobHandle

*a_pJob

Handle des auszuführenden Auftrags


5.4. CibMailJobConnect

COMOD_BOOL COMOD_API CibMailJobConnect(CibMailJobHandle a_hJob)

Mit dieser Methode wird eine Verbindung zum Jobhandle hergestellt.

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.

Parameter:

Typ:

Variable:

Bedeutung:

CibMailJobHandle

*a_hJob

Handle des auszuführenden Auftrags

 


5.5. CibMailJobSend

COMOD_BOOL COMOD_API CibMailJobSend(CibMailJobHandle a_hJob)

Falls die Verwendung des MAPI-Protokolls gewählt ist, wird mit dieser Funktion versucht, eine MAPI-Session aufzubauen. Als E-Mail-Programm wird der auf dem System eingerichtete Standard-Email-Client verwendet.

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.

Parameter:

Typ:

Variable:

Bedeutung:

CibMailJobHandle

*a_hJob

Handle des auszuführenden Auftrags


5.6. CibMailJobDisconnect

COMOD_BOOL COMOD_API CibMailJobDisconnect(CibMailJobHandle a_hJob)

Mit dieser Methode wird die Verbindung zum Jobhandle abgebaut.

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.

Parameter:

Typ:

Variable:

Bedeutung:

CibMailJobHandle

*a_hJob

Handle des auszuführenden Auftrags


5.7. CibMailJobSetProperty

COMOD_BOOL COMOD_API CibMailJobSetProperty(CibMailJobHandle a_hJob, char* a_pOptionName, char* a_pOptionValue)

Mit dieser Methode können die Eigenschaften des Jobs gesetzt werden.

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.

Parameter:

Typ

Variable

Bedeutung

CibMailJobHandle

*a_hJob

Handle des auszuführenden Auftrags

char*

a_pOptionName

Name des gewünschten Konfigurationsparameters

void*

a_pOptionValue

Wert des gewünschten Konfigurationsparameters

Achtung:

Beachten Sie den jeweiligen Datentyp des jeweiligen Wertes


5.8. CibMailJobGetProperty

COMOD_BOOL COMOD_API CibMailJobGetProperty(CibMailJobHandle a_hJob, char* a_pOptionName, char* a_pOptionValue, long a_lBufferLength);

Mit dieser Methode können die Eigenschaften des Jobs ausgelesen werden.

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.

Parameter:

Typ

Variable

Bedeutung

CibMailJobHandle

*a_hJob

Handle des auszuführenden Auftrags

char*

a_pOptionName

Name des gewünschten Konfigurationsparameters

void*

a_pOptionValue

Wert des gewünschten Konfigurationsparameters

Long

a_lBufferLength

Länge des Puffers für den Optionsinhalt


5.9. CibMailJobGetError

COMOD_BOOL COMOD_API CibMailJobGetError(CibMailJobHandle a_hJob, int* a_pErrorCode);

Mit dieser Funktion kann der aktuelle Fehlerstatus der CIB job Komponente nach dem Ausführen einer Funktion abgefragt werden.

Parameter:

Typ

Variable

Bedeutung

CibMailJobHandle

*a_hJob

Handle des auszuführenden Auftrags

int *

a_pErrorCode

Platzhalter für die aktuelle Fehlernummer


Die Funktion liefert TRUE wenn kein Fehler beim Ausführen dieser Funktion aufgetreten ist. Ansonsten wird FALSE zurückgegeben.


5.10. CibMailJobGetErrorText

COMOD_BOOL COMOD_API CibMailJobGetErrorText(CibMailJobHandle a_hJob, char* a_pTextBuffer, long a_lBufferLength);

Mit dieser Funktion kann der aktuelle Fehlertext der CIB job Komponente nach dem Ausführen einer Funktion abgefragt werden.

Parameter:

Typ

Variable

Bedeutung

CibMailJobHandle

*a_hJob

Handle des auszuführenden Auftrags

Char*

a_pTextBuffer

Textpuffer für den Fehlertext

Long

a_lBufferLength

Länge des Puffers für den Optionsinhalt


Die Funktion liefert TRUE wenn kein Fehler beim Ausführen dieser Funktion aufgetreten ist. Ansonsten wird FALSE zurückgegeben.


5.11. CibMailConnect

BOOL EXPORTFUNC CibMailConnect(void);

Mit dieser Methode wird eine Verbindung zum Mailserver hergestellt.

Bei Verwendung des SMTP-Protokolls müssen vorher mit der Funktion CibMailSetProperty mindestens die Eigenschaften CIBMAIL_PROP_MAIL_AUTH_LOGIN, CIBMAIL_PROP_MAIL_AUTH_PASSWORD, CIBMAIL_PROP_SERVER und CIBMAIL_PROP_PORT gesetzt worden sein.

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.


5.12. CibMailDisconnect

BOOL EXPORTFUNC CibMailDisconnect(void);

Mit dieser Methode wird bei Verwendung des SMTP-Protokolls die Verbindung zum Mailserver abgebaut.

Die Funktion liefert TRUE zurück.


5.13. CibMailSend

BOOL EXPORTFUNC CibMailSend ();

Falls die Verwendung des MAPI-Protokolls gewählt ist, wird mit dieser Funktion versucht, eine MAPI-Session aufzubauen. Als E-Mail-Programm wird der auf dem System eingerichtete Standard-Email-Client verwendet. Es ist möglich, sowohl E-Mails dialoggeführt zu versenden, als auch im Batchbetrieb.

Zu den MAPI-fähigen Email-Clients gehören Outlook, Outlook Express, Netscape Messenger etc.

Falls die Verwendung des SMTP- Protokolls gewählt ist, wird mit dieser Funktion versucht, eine SMTP-Session aufzubauen.

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.


5.14. CibMailGetProperty

BOOL EXPORTFUNC CibMailGetProperty(const char* a_pOptionName, void* a_pOptionValue, long a_lBufferLength);

Mit dieser Funktion können die aktuell gesetzten Eigenschaften der CIB smtp/mail Komponente abgefragt werden.

Parameter:

Typ

Variable

Bedeutung

Char*

a_pOptionName

Name des gewünschten Konfigurationsparameters

Void*

a_pOptionValue

Wert des gewünschten Konfigurationsparameters

Long

a_lBufferLength

Länge des Puffers für den Optionsinhalt

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.

5.15. CibMailSetProperty

BOOL EXPORTFUNC CibMailSetProperty(const char* a_pOptionName, void* a_pOptionValue);

Mit dieser Funktion werden Eigenschaften für den eMail-Versand gesetzt.

Bei Verwendung des MAPI-Protokolls müssen vorher mindestens die Eigenschaften MailRecipientsMailBox, MailSubject und MailTextFilename gesetzt worden sein.

Parameter:

Typ

Variable

Bedeutung

char*

a_pOptionName

Name des gewünschten Konfigurationsparameters

void*

a_pOptionValue

Wert des gewünschten Konfigurationsparameters

Achtung:

Beachten Sie den jeweiligen Datentyp des jeweiligen Wertes

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.


5.16. CibMailGetLastError

BOOL EXPORTFUNC CibMailGetLastError(int *a_iError);

Mit dieser Funktion kann der aktuelle Fehlerstatus der CIB smtp/mail Komponente nach dem Ausführen verschiedener Funktionen abgefragt werden.

Parameter:

Typ

Variable

Bedeutung

int *

a_iError

Platzhalter für die aktuelle Fehlernummer

Ein Fehlercode größer 0 bedeutet, dass ein Problem aufgetreten ist und der eMail-Versand nicht ordentlich zu Ende geführt wurde. Ein Fehlercode kleiner 0 bedeutet, dass der Benutzer den eMail-Versand bewusst abgebrochen hat.

Die Funktion liefert TRUE wenn kein Fehler beim Ausführen dieser Funktion aufgetreten ist. Ansonsten wird FALSE zurückgegeben.


5.17. CibMailGetLastErrorText

BOOL EXPORTFUNC CibMailGetLastErrorText(char *a_pTextBuffer, long a_lBufferLength);

Mit dieser Funktion kann der aktuelle Fehlertext der CIB smtp/mail Komponente nach dem Ausführen einer Funktion abgefragt werden.

Typ

Variable

Bedeutung

Char*

a_pTextBuffer

Textpuffer für den Fehlertext

Long

a_lBufferLength

Länge des verfügbaren Textpuffers

Ein Fehlercode größer 0 bedeutet, dass ein Problem aufgetreten ist und der eMail-Versand nicht ordentlich zu Ende geführt wurde. Ein Fehlercode kleiner 0 bedeutet, dass der Benutzer den eMail-Versand bewusst abgebrochen hat.

Die Funktion liefert TRUE wenn kein Fehler beim Ausführen dieser Funktion aufgetreten ist. Ansonsten wird FALSE zurückgegeben.


5.18. CibMailGetErrorText

COMOD_BOOL  COMOD_API CibMailGetErrorText(int a_iErrorId, char* a_pTextBuffer, long a_lBufferLength

Mit dieser Funktion kann der Fehlertext der CIB smtp/mail Komponente zu einer beliebigen Fehlernummer abgefragt werden.

Typ

Variable

Bedeutung

int *

a_iError

Platzhalter für die Fehlernummer

Char*

a_pTextBuffer

Textpuffer für den Fehlertext

Long

a_lBufferLength

Länge des verfügbaren Textpuffers

 

Die Funktion liefert TRUE wenn kein Fehler beim Ausführen dieser Funktion aufgetreten ist. Ansonsten wird FALSE zurückgegeben.


5.19. CibMailGetVersion

BOOL EXPORTFUNC CibMailGetVersion(unsigned long &a_lVersion)

Die Funktion liefert die aktuelle Versionsnummer der CIB mail Komponente zurück. Damit können Sie in Ihrer Applikation sicherstellen, dass eine Mindestversion vorliegt, wenn Sie etwa spezielle Programmeigenschaften benutzen, die erst ab einem bestimmten Release zur Verfügung gestellt wurden.

Parameter:

(Maßgeblich für die Parameterübergabe ist das mitgelieferte Headerfile CibMail.h.)

Typ

Variable

Bedeutung

unsigned long &

a_lVersion

a_lVersion liefert die aktuelle Versionsnummer der CIB smtp/mail Komponente zurück. Der unsigned long-Wert liefert die Information in zwei Bereichen. Die ersten zwei Bytes enthalten den Versionszähler des Hauptreleases. Die Bytes 3 und 4 enthalten den zugehörigen aktuellen Releasezähler. Je nach Programmiersprache sind die Hi- und Lowbereiche entsprechend zu beachten (siehe Codebeispiele unten).

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.


5.20. CibMailGetVersionText

BOOL EXPORTFUNC CibMailGetVersionText(char* a_pText, size_t a_MaxLength)

Die Funktion liefert die aktuelle Versionsnummer der CIB mail Komponente als Text zurück. Diese kann in Programmoberflächen ausgegeben werden.

Parameter:

Typ

Variable

Bedeutung

char*

a_pText

Zeiger auf den Textbeginn

size_t

a_MaxLength

Maximale Länge des Textes

Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.


5.21. Allgemeine Properties

Allgemein
MAPI-Properties
SMTP-Properties

Allgemein

Die sogenannten "Properties" oder Eigenschaften bilden ein wesentliches Kriterium bei dem Aufruf der eigentlich auszuführenden Methode. Alle unten im Klartext genannten Optionsnamen sind in den einzelnen Headerdateien der Komponenten auch als „define“ deklariert und auch über diese „defines“ in Ihrem Sourcecode ansprechbar. Die verschiedenen Ausgabemodule besitzen weitere spezielle Properties, die dort in den einzelnen Unterkapiteln beschrieben sind.

Zum Setzen der Optionen steht die Funktion CibMailSetProperty und zum Abholen die Funktion CibMailGetProperty zur Verfügung.

Das CIB smtp/mail Modul ermöglicht das Erzeugen von eMail Nachrichten inkl. eines oder mehrere Dateianhänge (die ggf. vorher durch eines der Ausgabemodule erzeugt wurden). CIB mail nutzt wahlweise das SMTP-Protokoll oder das MAPI-Protokoll. Bei Verwendung des MAPI-Protokolls wird das SimpleMAPI Interface verwendet und ist auch nur auf dieser Plattform verfügbar.

Die eMail kann im Hintergrund (=“silent“) oder über den eMail-Dialog des jeweils eingesetzten eMail-Clients aufbereitet und versandt werden.

Allgemeine Properties der CIB mail Komponente (MAPI und SMTP): 

Optionsname

Optionswert

Datentyp

MailRecipientsMailBox

 

eMail-Adressen der Empfänger, jeweils durch Semikolon voneinander getrennt

Char*

MailCCRecipientsMailBox

 

eMail-Adressen der Empfänger von Kopien der eMail, jeweils durch Semikolon voneinander getrennt

Char*

MailBCCRecipientsMailBox

 

eMail-Adressen der Empfänger von Black Kopien der eMail, jeweils durch Semikolon voneinander getrennt

Char*

MailSenderMailBox

 

Absender-eMail-Adresse

Char*

MailSubject

 

Betreff der eMail, begrenzt auf 256 Zeichen oder weniger.

Char*

MailTextFilename

 

Nachricht-Text der eMail. Default = NULL

Char*

MailAttachmentFilename

 

Anhänge der eMail

Char*

MailProtocol

Zum Mail-Versand verwendetes Protokoll: “SMTP” oder “MAPI”

Default =SMTP

Char*

MailTraceFilename

Name der Protokolldatei in die ein Trace geschrieben werden soll

Char*

 

MAPI-Properties

Folgende Eigenschaften stehen nur für den E-Mail-Versand über die MAPI-Schnittstelle (nur unter Windows) zur Verfügung: 

Optionsname

Optionswert

Datentyp

"" (COMOD_PROP_SET_TO_DEFAULT)

NULL

Setzt alle Eigenschaften auf Ihre Defaultwerte zurück

void*

MailDialog

Gibt an, ob ein Mail-Dialog geöffnet werden soll, der dem Benutzer die Empfänger und weitere Sende-Optionen anzeigt. Default ist FALSE.

bool

MailLogonDialog

Gibt an, ob ein Mail-Logon-Dialog geöffnet werden soll für ein Logon durch den Benutzer falls erforderlich. Default ist FALSE.

bool

MailAvailable

 

Char*

MailResolveName

 

bool


SMTP-Properties

Folgende Eigenschaften stehen nur für den E-Mail-Versand über SMTP zur Verfügung.

Bei Verwendung des SMTP-Protokolls müssen vorher mindestens die Eigenschaften MailSenderMailBox, MailRecipientsMailBox, MailServer, MailServerPort, MailSubject und MailTextFilename gesetzt worden sein.

Optionsname

Optionswert

Datentyp

MailAttachmentMemoryAddress

Memory-Adresse der Mail-Anhangsdaten

Char*

MailAttachmentMimeType

MIME Typ der Mail-Anhangsdaten (e.g. applichation/pdf)

Default = text/plain

Char*

MailTextMemoryAddress

Memory-Adresse des Mail-Textes

Char*

MailTextContentType

Content type des Mail-Textes (e.g. text/html)

charset=… kann zusätzlich angegeben werden (e.g. text/html; charset=UTF-8)

Bei Dateinamen-Erweiterung == ".htm" ist der Default = “text/html; charset=ISO-8859-1“

Anderenfalls ist der

Default = “text/plain; charset=ISO-8859-1”

Char*

MailSenderFullName

Vollständiger Name des Absenders

Char*

MailRecipientsFullName

Vollständige Namen der Empfänger jeweils durch Semikolon voneinander getrennt

Char*

MailCCRecipientsFullName

Vollständige Namen der Empfänger der Kopien der eMail, jeweils durch Semikolon voneinander getrennt

Char*

MailBCCRecipientsFullName

Vollständige Namen der Empfänger der Black Kopien der eMail, jeweils durch Semikolon voneinander getrennt

Char*

MailReplyToMailBox

eMail-Adresse des Empfängers der Antwort-eMail

 

MailReplyToFullName

Vollständige Namen des Empfängers der Antwort-eMail

Char*

MailAdditionalHeader

optional: Zusätzliche Mail-Header-Einträge, e.g. X-Mailer ...

Char*

MailAuthLogin

Benutzer-Login-Name zur Authentifizierung

Char*

MailAuthPassword

Benutzer-Login-Kennwort zur Authentifizierung

Char*

MailProtocol

Zum Mail-Versand verwendetes Protokoll: “SMTP” oder “MAPI”

Char*

MailServer

Message Transfer Agent - sendender Server

Default = localhost

Char*

MailServerPort

Port zur Verbindung mit dem Server [MTA]

Default = 25

Char*

MailWorkSpace

Gibt den Verzeichnis-Pfad der Mail-Anhangsdateien und der Mailtext-Datei an.

Char*

SMTP

Gibt an, ob das SMTP-Protokoll verwendet werden soll. Default ist FALSE

bool

MAPI

Gibt an, ob das MAPI-Protokoll verwendet werden soll. Default ist FALSE

bool

UseBulkMail

Gibt an, ob die Massenmail-Option verwendet werden soll. Default ist FALSE

bool


6. Schneller Einstieg

Die Codebeispiele in diesem Kapitel demonstrieren die Verwendung von CIB mail in C++ und Visual Basic. Die Beispielcodes können von Ihnen in Ihr Projekt einfach übernommen und dort auch angepasst werden.


6.1. E-Mail-Versand über die CIB runshell mit ini-Datei unter WIN32

Nachfolgendes Beispiel zeigt, wie man mit der CIB runshell und der CIB mail Komponente unter WIN32 eine MAPI Mail versendet. Alle erforderlichen Properties sind in einer ini-Datei hinterlegt.

cibrsh.exe –i ./cibrsh.ini -om
 
Aufbau der ini-Datei:
 
MailRecipientsFullName="Hans Mustermann"
MailRecipientsMailBox=Hans.Mustermann@gmx.de
MailSenderFullName="Klaus Meier"
MailSenderMailBox=K-Meier@gmx.de
MailSubject="Die gewünschten Urlaubsfotos"
MailTextFilename=MailText.txt
MailTextContentType="text/plain"
MailAttachmentFilename=Fotos.pdf
MailDialog=1
MailProtocol=MAPI


6.2. E-Mail-Versand über die CIB runshell mit ini-Datei unter UNIX

Nachfolgendes Beispiel zeigt, wie man mit der CIB runshell und der CIB mail Komponente unter UNIX eine SMTP Mail versendet. Für die Anwendung fest eingestellte Properties sind in einer ini-Datei hinterlegt, variable Properties werden als Aufrufparameter der CIB runshell angegeben.

LD_LIBRARY_PATH=. ./cibrshux -i cibrsh.ini MailRecipientsMailBox=Hans.Mustermann@gmx.de
MailSubject="Die neuen Urlaubsfotos" MailTextFilename=MailText.txt
MailAttachmentFilename=Fotos.pdf -os
 
Aufbau der ini-Datei:
 
MailSenderMailBox=K-Meier@gmx.de
MailProtocol=SMTP
MailServer=solarix.cib.de
MailServerPort=25


6.3. E-Mail-Versand über die MAPI-Schnittstelle (VB)

Dim t_long As Long
Dim t_bool As Long
Dim t_result As Long
Dim t_String As String
Dim errMsg As String
Dim t_iErrorNumber As Long
 
t_String = "Hans Mustermann"
t_result = CibMailSetProperty("MailRecipientsFullName", ByVal t_String)
 
t_String = "Hans.Mustermann@gmx.de"
t_result = CibMailSetProperty("MailRecipientsMailBox", ByVal t_String)
 
t_String = "Klaus Meier"
t_result = CibMailSetProperty("MailSenderFullName", ByVal t_String)
 
t_String = "K-Meier@gmx.de"
t_result = CibMailSetProperty("MailSenderMailBox ", ByVal t_String)
 
t_String = "Die neuen Urlaubsfotos"
t_result = CibMailSetProperty("MailSubject", ByVal t_String)
 
t_String = "MailText.txt"
t_result = CibMailSetProperty("MailTextFilename", ByVal t_String)
 
t_String = "text/plain"
t_result = CibMailSetProperty("MailTextContentType", ByVal t_String)
 
t_String = "Fotos.pdf"
t_result = CibMailSetProperty("MailAttachmentFilename", ByVal t_String)
 
t_bool = 1
t_result = CibMailSetProperty("MailDialog", ByVal t_bool)
 
t_String = "MAPI"
t_result = CibMailSetProperty("MailProtocol", ByVal t_String)
  
 
MsgBox ("Versenden der eMail")
t_result = CibMailConnect
  
If t_result = 1 Then t_result = CibMailSend
 
If t_result = 1 Then t_result = CibMailDisconnect
 
 
t_long = CibMailGetLastError(t_iErrorNumber)
t_long = 256
errMsg = String(256, " ")
t_long = CibMailGetLastErrorText(ByVal errMsg, t_long)
 
 
If t_iErrorNumber <> 0 Then
errMsg = Mid(Trim(errMsg), 1, Len(Trim(errMsg)) - 1) + " (" + CStr(t_iErrorNumber) + ")"
MsgBox errMsg
Else
MsgBox "eMail erfolgreich versandt!" End If

6.4. E-Mail-Versand über SMTP (C++)

#include <windows.h>
#include <CibMail.h>
#include <COMod.h>
#include <stdio.h>
  
int main(int argc, char* argv[])
{
long t_long;
long t_bool;
long t_result;
char* t_string;
char* errMsg;
long t_iErrorNumber;
 
t_String = "Hans Mustermann";
t_result = CibMailSetProperty("MailRecipientsFullName", t_String);
 
t_String = "Hans.Mustermann@gmx.de";
t_result = CibMailSetProperty("MailRecipientsMailBox", t_String);
 
t_String = "Klaus Meier";
t_result = CibMailSetProperty("MailSenderFullName", t_String);
 
t_String = "K-Meier@gmx.de";
t_result = CibMailSetProperty("MailSenderMailBox ", t_String);
 
t_String = "Die gewünschten Urlaubsfotos";
t_result = CibMailSetProperty("MailSubject", t_String);
 
t_String = "MailText.txt";
t_result = CibMailSetProperty("MailTextFilename", t_String);
 
t_String = "text/plain";
t_result = CibMailSetProperty("MailTextContentType", t_String);
 
t_String = "Fotos.pdf";
t_result = CibMailSetProperty("MailAttachmentFilename", t_String);
 
t_String = "SMTP";
t_result = CibMailSetProperty("MailProtocol", t_String);
 
 
        // Versenden der eMail
        if ( ! CibMailConnect() )
        {
               CibMailGetLastError(t_iErrorNumber);
               printError(t_iErrorNumber);
               return t_iErrorNumber;
        }
 
        if ( ! CibMailSend() )
        {
               printError();
        }
 
        if ( ! CibMailDisconnect();
        {
               CibMailGetLastError(t_iErrorNumber);
               printError(t_iErrorNumber)
               return t_iErrorNumber;
        }
 
        printf("eMail erfolgreich versandt!");
        return 0;
}
 
 
void printError(long a_iErrorNumber)
{
        int t_RetVal = 0;
        long t_long
        char t_Buffer[256];
        char* t_ErrorText = t_Buffer
 
        t_long = 256;
        CibMailGetErrorText(a_iErrorNumber, t_ErrorText, t_long);
 
        if (t_iErrorNumber != 0 )
        {
               printf("Fehler %d beim Versenden der eMail: \n%s\n",
               t_iErrorNumber, t_ErrorText);
               t_RetVal = a_iErrorNumber;
        }
 
        return
}

7. Sonstiges




7.1. Fehlerbehandlung

CIB mail liefert beim Ausführen von Funktionen einen Rückgabewert FALSE(=0) wenn ein Fehler aufgetreten ist.

Der Rückgabewert kann von der Anwendung ausgewertet werden, siehe Kapitel Programmrückgabewerte.

CIB mail kann optional ausführliche Trace-Dateien erzeugen. Diese sind für den CIB Support bei der Analyse von komplexen Supportfällen oft sehr nützlich. Siehe Kapitel Trace-Möglichkeiten.


7.2. Programmrückgabewerte

Wir empfehlen zur konkreten Auswertung der Fehlernummer, die Funktion CibMailGetLastErrorText bzw. CibMailGetErrorText zu verwenden. Die hier angegebene Übersicht zeigt eine Übersicht über die Fehlernummern. Die aktuelle Software kann ggf. noch umfangreichere Fehlerinformationen enthalten.

Rückgabewert

Bedeutung / Mögliche Ursache

-1

Der Mailauftrag wurde durch den Benutzer abgebrochen.

Ursache: In der Maildialogbox wurde der "Abbrechen/Schließen"-Button betätigt bzw. die ESC-Taste ausgelöst.

650

Kein Empfänger angegeben

651

Kein Betreff angegeben

652

Kein Nachrichten-Text

653

Verbindungsfehler aufgetreten

654

Netzwerkfehler aufgetreten

655

Fehler bei der Anmeldung

656

Angegebenes Protokoll unbekannt

657

Ungültiger Sender

658

Unbekannter Empfänger

659

Fehler beim Nachrichten-Anhang

660

Keine Ziffern gefunden

661

Bereichsüberschreitung

662

Zeichenkette ungültig

663

Nichts zu tun

664

Verbindung abgebrochen

665

Ungültige Antwort-Syntax

666

Status falsch zugeordnet

667

Ungültiger Antwort-Status

668

Ungültig

669

Erweiterung nicht verfügbar

670

Antwort ist nicht beendet

671

Client-Fehler

672

Fehler EAI wiederholt

673

Fehler EAI Fehler

674

Fehler EAI Speicher

675

Fehler EAI Adress-Familie

676

Fehler EAI keine Daten

677

Fehler EAI Familie

678

Fehler EAI ungültige Flags

679

Fehler EAI kein Name

680

Fehler EAI Service

681

Fehler EAI Socket-Typ

682

Unbekannter Fehler

691

Empfänger nicht gesetzt

692

CC-Empfänger nicht gesetzt

693

BCC-Empfänger nicht gesetzt

694

Es ist kein Empfänger gesetzt

695

Fehler beim Mail-Text

696

Fehler beim Attachment

697

Fehler bei der Session

698

Fehler bei der Message

699

Interner Programmfehler

700

MapiClient ist nicht installiert

701

MAPI Mail nicht verfuegbar


7.3. Trace

Für unklare Fehlersituationen haben Sie folgende Möglichkeiten eine zusätzliche Protokolldatei zu erzeugen:

  • Sie setzen die Umgebungsvariable CIB_MAILTRACE auf einen Dateinamen und führen den Vorgang aus
  • Sie setzen die Property MailTraceFilename