Aus eigener Not ist unter folgenden Anforderungen eine SendMailkomponente entstanden, mit folgenden Eigenschaften:
- HTML und Plaintext ohne grosse Umwege. Entworfen soll einfach nur die HTML Mail inkl. Grafiken in der Mail. Der Plaintext Anteil soll automatisch daraus erstellt werden, damit ältere Mailclients die Mail auch lesen können.
- Es soll mit Vorlagen gearbeitet werden, damit individualisierte Mails sehr leicht erstellt werden können.
- Die Vorlage kann aus einer Datenbanktabelle stammen (Blob Feld), oder direkt aus einer Datei.
- Basiert auf Indy 10.
Gebt mir mal Eure Kommentare ab, bevor ich mich hier wund tippe um zu erklären wie die Komponente funktioniert.
Am Bsp von TMailTemplateFile will ich dennoch kurz darauf eingehen, wie die Komponente zu handhaben ist.
Als Erstes verlangt die Komponente einige Eigenschaften, die auf andere Komponenten verweisen. Das sind:
- TIdSMTP - Die SMTP Komponente von Indy 10. Hier müssen SMTP Host, Port etc. eingestellt werden. Die Ereignisse OnWork und OnWorkBegin werden jedoch von meiner Komponente überschrieben
- TIdMessage
- TMailTemplateHeader - Hier werden allgemein gültige Parameter festgelegt, wie z.B. eine BCC Liste. Somit kann hier global eingestellt werden, dass jeweils eine BlinCopy verschickt werden kann.
- TMailTemplateDatabaseInfo - Nur wichtig wenn das Template aus der DB stammt. Getestet wurde da Ganze am MSSQL Server. Das Template muss in einem Image Datenbanktyp abgelegt sein. Die Verbindung wird über ADO hergestellt.
Weitere wichtige Eigenschaften von TMailTemplateFile sind:
- Filename - der Dateiname des Template
- PatterBegin und PatternEnd - zwischen diesen beiden Zeichen wird ein Templateparameter plaziert, z.B. {Vorname}
- Progressbar - Zum direkten Anzeigen einer Fortschrittanzeige
- SubjectTemplate - Der Subjet der Mail
- Textwidth - maximale Zeilenbreite für den Plaintextanteil
- UseHTML - Mail beihaltet einen HTML und einen PlainText Part. Bei false, wird nur Plaintext versandt.
- Attachment - Eine Stringliste mit anzufügenden Attachments
Die Verwendung ist sehr easy...
TMailTemplateFile.Send('klaus.mustermann@gmx.de') ;
Das wichtigste Ereignis der Kompo ist:
OnParameter - Wird ein Parameter im Template gefunden, z.B. {Vorname} so kann der Wert in diesem Ereignis zur Laufzeit mit dem gewünschten Wert gefüllt werden. FixedParameters aus TMailTemplateHeader können direkt gesetzt werden und müssen nicht mehr im OnParameter Ereignis abgehandelt werden. Typisches Bsp. für fixe Parameter sind z.B. {Datum}.
Die restlichen Ereignisse der Kompo sollten selbsterklärend sein.
C'est tout. Ich hoffe die Kompo kann von einigen genutzt werden. Mir persönlich hat sie schon ganz gute Dienste geleistet und wollt sie Euch nicht vorenthalten.
Ich werde vielleicht heut abend noch ne kurze Demo schreiben, wie einfach die Komponente anzuwenden ist.
Feedback ist natürlich auch erwünscht.
Edit 12.06.2007:
Auf User Wunsch habe ich mal ein kleines Demo Projekt angehängt.