CIB mail technischer Leitfaden
Site: | CIB eLearning |
Course: | CIB mail |
Book: | CIB mail technischer Leitfaden |
Printed by: | Guest user |
Date: | Wednesday, 15 January 2025, 4:28 PM |
Table of contents
- 1. Lieferumfang
- 2. Einführung
- 3. Gegenüberstellung von MAPI und SMTP
- 4. Anwendungsfälle
- 5. Technische Schnittstellen
- 5.1. CibMailJobHandle
- 5.2. CibMailJobCreate
- 5.3. CibMailJobFree
- 5.4. CibMailJobConnect
- 5.5. CibMailJobSend
- 5.6. CibMailJobDisconnect
- 5.7. CibMailJobSetProperty
- 5.8. CibMailJobGetProperty
- 5.9. CibMailJobGetError
- 5.10. CibMailJobGetErrorText
- 5.11. CibMailConnect
- 5.12. CibMailDisconnect
- 5.13. CibMailSend
- 5.14. CibMailGetProperty
- 5.15. CibMailSetProperty
- 5.16. CibMailGetLastError
- 5.17. CibMailGetLastErrorText
- 5.18. CibMailGetErrorText
- 5.19. CibMailGetVersion
- 5.20. CibMailGetVersionText
- 5.21. Allgemeine Properties
- 6. Schneller Einstieg
- 7. Sonstiges
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
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 |
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
AllgemeinMAPI-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