PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
ppl6::CReadMail Klassenreferenz

Klasse zum Lesen und Dekodieren von Emails. Mehr ...

Öffentliche Methoden

 CReadMail ()
 Konstruktor der Klasse. Mehr ...
 
 ~CReadMail ()
 Destruktor der Klasse. Mehr ...
 
void Clear ()
 Inhalt der Klasse wird gelöscht. Mehr ...
 
const char * GetBody ()
 Gibt einen Pointer auf den kompletten undekodierten Body zurück. Mehr ...
 
int GetBody (CString &Buffer)
 Unveränderten Body in einen Puffer kopieren. Mehr ...
 
const char * GetDecodedBody ()
 Pointer auf dekodierten Body zurückgeben. Mehr ...
 
int GetDecodedBody (CString &Buffer)
 Dekodierten Body in einen Puffer schreiben. Mehr ...
 
const char * GetHeader (const char *key)
 Gibt den Wert eines Keywortes im Header zurück. Mehr ...
 
const char * GetHeader ()
 Gibt einen Pointer auf den kompletten Header zurück. Mehr ...
 
int GetHeader (CString &Buffer)
 Kompletten Header in einen Puffer kopieren. Mehr ...
 
int GetHeader (CString &Buffer, const char *key)
 Kopiert den Wert eines Keywortes im Header in einen Puffer. Mehr ...
 
CAssocArrayGetHeaderArray (CAssocArray *Buffer=NULL)
 Pointer auf Assoziatives Array mit Header-Zeilen. Mehr ...
 
int GetHeaderArray (CAssocArray &Buffer)
 Header-Zeilen in ein Assoziatives Array kopieren. Mehr ...
 
const char * GetMail ()
 Pointer auf komplette Mail zurückgeben. Mehr ...
 
int GetMail (CString &Buffer)
 Komplette Mail in einen Puffer kopieren. Mehr ...
 
const char * GetTranscodedBody (const char *charset="UTF-8")
 Pointer auf dekodierten Body zurückgeben. Mehr ...
 
int GetTranscodedBody (CString &Buffer, const char *charset="UTF-8")
 Dekodierten und Transkodierten Body in einen Puffer kopieren. Mehr ...
 
int LoadFile (const char *filename,...)
 Mail aus Datei laden. Mehr ...
 
int LoadFile (CFileObject *file)
 Mail aus Datei laden. Mehr ...
 
int LoadFile (CFileObject &file)
 Mail aus Datei laden. Mehr ...
 
int LoadString (const char *string)
 Mail aus String laden. Mehr ...
 
int LoadString (const CString &string)
 Mail aus String laden. Mehr ...
 

Private Methoden

int Decode_Base64 ()
 Body im "Base64"-Format dekodieren. Mehr ...
 
int Decode_QuotedPrintable ()
 Body im "Quoted Printable"-Format dekodieren. Mehr ...
 
int DecodeBody ()
 Body der Mail Dekodieren. Mehr ...
 
int ParseHeader ()
 Header der Mail in ein Assoziatives Array parsen. Mehr ...
 
int RemoveCR ()
 Eventuell vorhandene Carriage-Returns (CR) entfernen oder durch Newline (NL) ersetzen. Mehr ...
 
int SplitHeaderAndBody ()
 Mail in Header und Body zerlegen. Mehr ...
 

Private Attribute

CString Body
 String mit dem kompletten unveränderten Body. Mehr ...
 
CString Decoded
 String mit dem kompletten dekodierten Body. Mehr ...
 
CString Header
 String mit dem kompletten unveränderten Header. Mehr ...
 
CAssocArray HeaderLines
 Assoziatives Array mit den einzelnen Keyworten des Headers. Mehr ...
 
bool Loaded
 Flag was anzeigt, ob eine Mail erfolgreich geladen wurde. Mehr ...
 
CString Mail
 String mit der kompletten unverarbeiteten Mail. Mehr ...
 
CString Transcoded
 String mit dem kompletten dekodierten und Transcodierten Body. Mehr ...
 

Ausführliche Beschreibung

Include:
#include <ppl6.h>
Beschreibung:
Mit dieser Klasse können Emails eingelesen und Dekodiert werden. Anschließend kann man auf die einzelnen Bestandteile des Headers und den Body zugreifen.
Seit
Diese Klasse wurde mit Version 6.1.3 eingeführt.

Beschreibung der Konstruktoren und Destruktoren

ppl6::CReadMail::CReadMail ( )
ppl6::CReadMail::~CReadMail ( )

Dokumentation der Elementfunktionen

void ppl6::CReadMail::Clear ( )

Diese Funktion wird automatisch vom Destruktor und zu Beginn der Load-Funktion aufgerufen, um den Inhalt der Klasse zu leeren und den allokierten Speicher freizugeben,

int ppl6::CReadMail::Decode_Base64 ( )
private
int ppl6::CReadMail::Decode_QuotedPrintable ( )
private
int ppl6::CReadMail::DecodeBody ( )
private
const char * ppl6::CReadMail::GetBody ( )

Gibt einen Pointer auf den kompletten undekodierten Body zurück

Zu beachten
Der Speicherbereich wird von der CReadMail-Klasse verwaltet und darf von der Anwendung nicht verändert oder freigegeben werden!
int ppl6::CReadMail::GetBody ( CString Buffer)

Diese Funktion kopiert den unveränderten original Body in den angegebenen Buffer.

Parameter
[out]BufferPointer auf einen String, in den der Inhalt des Bodies kopiert werden soll.
Rückgabe
Bei Erfolg gibt die Funktion true (1) zurück, im Fehlerfall false (0).
const char * ppl6::CReadMail::GetDecodedBody ( )

Diese Funktion liefert einen Pointer auf den Dekodierten Body zurück. Das Charset ist dabei noch unverändert und entspricht der in der Mail angegebenen Kodierung.

Rückgabe
Wenn der Body zuvor erfolgreich dekodiert werden konnte, gibt die Funktion einen Pointer darauf zurück. Im Fehlerfall wird NULL zurückgegeben und ein Fehlercode gesetzt.
Zu beachten
Der Speicherbereich wird von der CReadMail-Klasse verwaltet und darf von der Anwendung nicht verändert oder freigegeben werden!
int ppl6::CReadMail::GetDecodedBody ( CString Buffer)

Diese Funktion kopiert den dekodierten Body in den angegebenen Buffer. Das Charset ist dabei noch unverändert und entspricht der in der Mail angegebenen Kodierung.

Parameter
[out]BufferPointer auf einen String, in den der Inhalt des Bodies kopiert werden soll.
Rückgabe
Bei Erfolg gibt die Funktion true (1) zurück, im Fehlerfall false (0).
const char * ppl6::CReadMail::GetHeader ( const char *  key)

Diese Funktion prüft, ob es im Header eine zum key passende Zeile gibt, und gibt dessen Wert zurück.

Parameter
[in]keyPointer auf den Namen der Header-Zeile (z.B. "Subject" oder "From").
Rückgabe
Bei Erfolg liefert die Funktion einen Pointer auf den Wert des Schlüssels zurück, im Fehlerfall NULL.
Zu beachten
Werte, die im Mail-Header über mehrere Zeilen gingen (z.B. Received-Zeilen) werden zu einer Zeile zusammengefasst, wobei ein Space als Trennzeichen benutzt wird. Keyworte, die mehrfach im Header vorkommen (z.B. Received-Zeilen), werden in einem String zusammengefasst, der durch Newline getrennt wird. Mit Hilfe von CArray::Explode lassen sich so z.B. die einzelnen Received-Zeilen einer Mail wieder aufsplitten.
const char * ppl6::CReadMail::GetHeader ( )

Gibt einen Pointer auf den kompletten Header zurück

Zu beachten
Der Speicherbereich wird von der CReadMail-Klasse verwaltet und darf von der Anwendung nicht verändert oder freigegeben werden!
int ppl6::CReadMail::GetHeader ( CString Buffer)

Diese Funktion kopiert den kompletten Header der Mail in den angegebenen Buffer.

Parameter
[out]BufferPointer auf einen String, in den der Inhalt des Headers kopiert werden soll.
Rückgabe
Bei Erfolg gibt die Funktion true (1) zurück, im Fehlerfall false (0).
int ppl6::CReadMail::GetHeader ( CString Buffer,
const char *  key 
)

Diese Funktion prüft, ob es im Header eine zum key passende Zeile gibt, und kopiert dessen Wert in den angegebenen Buffer.

Parameter
[out]BufferPointer auf einen String, in dem der Wert gespeichert werden soll.
[in]keyPointer auf den Namen der Header-Zeile (z.B. "Subject" oder "From").
Rückgabe
Bei Erfolg liefert die Funktion true (1) zurück, im Fehlerfall false (0).
Zu beachten
Werte, die im Mail-Header über mehrere Zeilen gingen (z.B. Received-Zeilen) werden zu einer Zeile zusammengefasst, wobei ein Space als Trennzeichen benutzt wird. Keyworte, die mehrfach im Header vorkommen (z.B. Received-Zeilen), werden in einem String zusammengefasst, der durch Newline getrennt wird. Mit Hilfe von CArray::Explode lassen sich so z.B. die einzelnen Received-Zeilen einer Mail wieder aufsplitten.
CAssocArray * ppl6::CReadMail::GetHeaderArray ( CAssocArray Buffer = NULL)

Diese Funktion gibt einen Pointer auf ein Assoziatives Array zurück, dass die einzelnen Zeilen des Headers enthält.

Parameter
[out]BufferEin optionaler Pointer auf ein Assoziatives Array, in das die Headerzeilen kopiert werden sollen.
Rückgabe
Wurde der Buffer-Parameter angegeben, wird bei Erfolg ein Pointer auf diesen zurückgegeben. Wurde Buffer nicht angegeben, wird ein Pointer auf ein internes Array zurückgegeben, dessen Speicher von der CReadMail-Klasse verwaltet wird und von der Anwendung nicht freigegeben werden darf.
int ppl6::CReadMail::GetHeaderArray ( CAssocArray Buffer)
Beschreibung:
Mit dieser Funktion werden die Header-Zeilen der Mail als Key-Value-Paare in das Assoziative Array Buffer kopiert.
Parameter
[out]BufferReferenz auf ein Assoziatives Array, in das die Headerzeilen kopiert werden sollen.
Rückgabe
Wurden die Header-Zeilen erfolgreich kopiert, gibt die Funktion 1 zurück, im Fehlerfall 0.
const char * ppl6::CReadMail::GetMail ( )

Diese Funktion gibt einen Pointer auf den kompletten unveränderten Inhalt der Mail zurück.

Rückgabe
Bei Erfolg liefert die Funktion einen Pointer auf den Inhakt der Mail zurück, im Fehlerfall NULL,
int ppl6::CReadMail::GetMail ( CString Buffer)

Diese Funktion kopiert die komplette unveränderte Mail in den angegebenen Buffer.

Parameter
[out]BufferPointer auf einen String, in den der Inhalt der Mail kopiert werden soll.
Rückgabe
Bei Erfolg gibt die Funktion true (1) zurück, im Fehlerfall false (0).
const char * ppl6::CReadMail::GetTranscodedBody ( const char *  charset = "UTF-8")

Diese Funktion liefert einen Pointer auf Body zurück, der dekodiert und in das gewünschte Charset gewandelt wurde.

Parameter
[in]charsetName des gewünschten Charsets. Der Default ist "UTF-8".
Rückgabe
Wenn der Body erfolgreich in das gewünschte Charset kodiert werden konnte, gibt die Funktion einen Pointer darauf zurück. Im Fehlerfall wird NULL zurückgegeben und ein Fehlercode gesetzt.
Zu beachten
Der Speicherbereich wird von der CReadMail-Klasse verwaltet und darf von der Anwendung nicht verändert oder freigegeben werden! Bei wiederholtem Aufruf der Funktion wird der alte Speicherbereich überschrieben.
int ppl6::CReadMail::GetTranscodedBody ( CString Buffer,
const char *  charset = "UTF-8" 
)

Diese Funktion versucht den Body der Mail in das gewünschte charset zu transkodieren und kopiert diesen dann in den angegebenen Buffer.

Parameter
[out]BufferString, in dem das Ergebnis gespeichert werden soll.
[in]charsetName des gewünschten Charsets. Der Default ist "UTF-8".
Rückgabe
Wenn der Body erfolgreich in das gewünschte Charset kodiert werden konnte, gibt die Funktion true(1) zurück und kopiert den Body in den Buffer. Im Fehlerfall wird false (0) zurückgegeben und ein Fehlercode gesetzt.
int ppl6::CReadMail::LoadFile ( const char *  filename,
  ... 
)
int ppl6::CReadMail::LoadFile ( CFileObject file)
int ppl6::CReadMail::LoadFile ( CFileObject file)
int ppl6::CReadMail::LoadString ( const char *  string)
int ppl6::CReadMail::LoadString ( const CString string)
int ppl6::CReadMail::ParseHeader ( )
private
int ppl6::CReadMail::RemoveCR ( )
private
int ppl6::CReadMail::SplitHeaderAndBody ( )
private

Dokumentation der Datenelemente

ppl6::CReadMail::Body
private

String mit dem kompletten unveränderten Body. Der Inhalt kann über die GetBody-Funktionen ausgelesen werden:

  • const char *CReadMail::GetBody();
  • int CReadMail::GetBody(CString *Buffer);
ppl6::CReadMail::Decoded
private

String mit dem kompletten dekodierten Body. Eine Mail im Quoted-Printable oder Base64-Format wurde hier bereits in lesbare Zeichen umgewandelt. Der Inhalt kann über die GetDecodedBody-Funktionen ausgelesen werden:

  • const char *CReadMail::GetDecodedBody();
  • int CReadMail::GetDecodedBody(CString *Buffer);
ppl6::CReadMail::Header
private

String mit dem kompletten unveränderten Header. Der Inhalt kann über die GetHeader-Funktionen ausgelesen werden:

  • const char *CReadMail::GetHeader();
  • int CReadMail::GetHeader(CString *Buffer);
ppl6::CReadMail::HeaderLines
private

Dieses Array beinhaltet die einzelnen Keywörter des Mail-Headers. Dabei ist sichergestellt, dass mehrzeilige Werte zu einer Zeile zusammengefasst sind. Bei Keywörtern, die mehrfach im Header auftauchen (Received-Zeile) werden die einzelnen Vorkommen mit Newline voneinander getrennt.

Das komplette Array kann mit der Funktion CReadMail::GetHeaderArray ausgelesen/kopiert werden, einzelne Elemente mit CReadMail::GetHeader(const char *key)

ppl6::CReadMail::Loaded
private
ppl6::CReadMail::Mail
private

String mit der kompletten unverarbeiteten Mail. Der Inhalt kann über die GetMail-Funktionen ausgelesen werden:

  • const char *CReadMail::GetMail();
  • int CReadMail::GetMail(CString *Buffer);
ppl6::CReadMail::Transcoded
private

Dies ist ein Behelfs-String, der nur gefüllt wird, wenn die Funktion CReadMail::GetTranscodedBody(CString *Buffer, const char *charset) ohne Buffer aufgerufen wird. Der Body ist dabei bereits Dekodiert und in das angegebene Charset umgewandelt.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: