Emails senden mit CDONTS
Geschrieben von: Christian Koller CDO (Collaboration Data Object) ist ein vom IIS 4.0 zur Verfügung gestelltes Interface, das es erlaubt, Emails über einen SMTP- oder Exchange Server zu versenden. Ein SMTP Server zum Versenden von Emails wird mit IIS 4.0 mitgeliefert, wobei CDO die Schnittstelle zwischen Webapplikationen (ASP-Seiten) des IIS 4.0 auf der einen Seite, und dem SMTP Server auf der anderen Seite bildet. Die CDO Library stellt das CDONTS.NewMail Objekt zur Verfügung, das eine einfache Handhabung und hohe Performance vereint. CDONTS steht dabei für "Collaboration Data Object for NT Server". Das CDONTS.NewMail Objekt lässt sich leicht einsetzen um eine Email aus einer ASP Seite heraus zu verschicken, wie das folgende VBScript Beispiel zeigt: Const cstCdoMailFormatMime = 1 Const cstCdoMailFormatText = 0 Const cstCdoBodyFormatHTML = 0 Const cstCdoBodyFormatText = 1 strBetreff = "Textnachricht" strNachricht = "Dies ist eine Textnachricht," & VbCrLf strNachricht = strNachricht & "generiert vom NewMail Objekt." strEmpaenger = "christiank@aspexpert.com" strAbsender = "office@aspheute.com" ' Email abschicken: Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.MailFormat = cstCdoMailFormatText objNewMail.BodyFormat = cstCdoBodyFormatText objNewMail.From = strAbsender objNewMail.To = strEmpaenger objNewMail.Subject = strBetreff objNewMail.Body = strNachricht objNewMail.Send Set objNewMail = Nothing Nachdem die Email mit der Methode Send abgeschickt wurde, liegt die Email in der Queue des SMTP Servers und wird sobald als möglich abgeschickt. Diese Vorgangsweise begründet eine sehr hohe Performance für die ASP-Seite, da die Email einfach nur an den SMTP Server übergeben wird und die ASP-Seite somit nicht warten muss, bis die Email tatsächlich gesendet wurde. Aus diesem Grund ist CDO auch die bevorzugte Methode um Emails in Newsletter-, Listserver- oder anderen Massenmail-Applikationen zu versenden. Das CDONTS.NewMail Objekt ist bereits für schnellstes Erstellen und Versenden von Emails konzipiert. Daher stellt es auch keines der sonst üblichen CDO Interfaces zur Verfügung. Weiters kann ein einmal erstelltes Objekt nur zum Versenden einer Email verwendet werden. Es ist notwendig, für jede Email ein eigenes Objekt (mittels CreateObject) zu erstellen, und nach Versenden der Email die Resourcen des Objektes wieder freizugeben (Set objNewMail = Nothing). Die Verwendung des CDONTS.NewMail Objektes aus Performance-Gründen einer ASP-Komponente (wie ASPMail) vorzuziehen. Um das Objekt einzusetzen muss jedoch am IIS der SMTP Server laufen. Ein weiterer Grund, der gegen die Verwendung des NewMail Objektes sprechen könnte, ist der für spezielle Anwendungen eingeschränkte Funktionsumfang. Ausserdem kann CDONTS nur unter IIS (Windows NT/2000) aber nicht unter PWS (Windows 9x) eingesetzt werden. Welchen Funktionsumfang bietet nun das CDONTS.NewMail Objekt?
Die Dringlichkeit einer Nachricht stellt man über die Importance Eigenschaft ein: Const cstCdoLow = 0 ' Low importance Const cstCdoNormal = 1 ' Normal importance (default) Const cstCdoHigh = 2 ' High importance ' Hohe Dringlichkeit: objNewMail.Importance = cstCdoHigh Ein Attachment kann man mit Hilfe der AttachFile Methode an das Mail anhängen (siehe auch AttachURL Methode der IIS Dokumentation): ' Datei an Email anfügen: objNewMail.AttachFile "C:\attachements\datei.txt","datei.txt" Um eine HTML-Email zu generieren verwendet man Standard HTML im Nachrichten Body und setzt die BodyFormat Eigenschaft auf CdoBodyFormatHTML: Const cstCdoBodyFormatHTML = 0 Const cstCdoBodyFormatText = 1 Const cstCdoLow = 0 ' Low importance Const cstCdoNormal = 1 ' Normal importance (default) Const cstCdoHigh = 2 ' High importance strBetreff = "HTML-Nachricht" strNachricht = "Dies ist eine <u>Textnachricht<u>,<br>" & VbCrLf strNachricht = strNachricht & "generiert vom <i>NewMail Objekt</i>.<br>" strEmpaenger = "christiank@aspexpert.com" strAbsender = "office@aspheute.com" ' Email mit hoher Dringlichkeit: Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.BodyFormat = cstCdoBodyFormatHTML objNewMail.Importance = cstCdoHigh objNewMail.From = strAbsender objNewMail.To = strEmpaenger objNewMail.Subject = strBetreff objNewMail.Body = strNachricht objNewMail.Send Set objNewMail = Nothing Wie bereits erwähnt, muss beim Gebrauch des CDONTS.NewMail Objektes für jedes Mail ein eigenes Objekt generiert werden. Eine Wiederverwendung des Objektes ist nicht möglich. Um also zwei Emails zu versenden, geht man wie folgt vor: strBetreff = "Email" strNachricht = "Dies ist eine Email!" strAbsender = "office@aspheute.com" ' Erste Email: strEmpaenger = "christiank@aspexpert.com" Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.From = strAbsender objNewMail.To = strEmpaenger objNewMail.Subject = strBetreff objNewMail.Body = strNachricht objNewMail.Send Set objNewMail = Nothing ' Zweite Email: strEmpaenger = "office@aspexpert.com" Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.From = strAbsender objNewMail.To = strEmpaenger objNewMail.Subject = strBetreff objNewMail.Body = strNachricht objNewMail.Send Set objNewMail = Nothing Ein Script, das ein Massenmailing aus einer Datenbank generiert, könnte also wie folgt aussehen: ... ' Eine Email an alle Empfänger des Recordsets Rs schicken: While not Rs.EOF Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.From = "office@aspheute.com" objNewMail.To = rs("EmpfaengerEmail") objNewMail.Subject = "Wichtige Informationen!" strNachricht = "Sehr geehrter Herr" & rs("Name") & "!" & VbCrLf strNachricht = strNachricht & "Aktuelles aus unserem Programm ..." objNewMail.Body = strNachricht objNewMail.Send Set objNewMail = Nothing Rs.MoveNext Wend ... Wenn man eine ASP-Applikation erstellt, bei der täglich einige hundert bis tausend Emails geschickt werden sollen, so ist der Einsatz des CDONTS.NewMail Objektes eine Überlegung wert. Verwandte Artikel
ACT MetaMailer - Mails verschicken leicht gemacht Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |