Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Emails senden mit CDONTS

Geschrieben von: Christian Koller
Kategorie: ASP Grundlagen

This printed page brought to you by AlphaSierraPapa

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.

This printed page brought to you by AlphaSierraPapa

Verwandte Artikel

ACT MetaMailer - Mails verschicken leicht gemacht
http:/www.aspheute.com/artikel/20021028.htm
Das Versenden von Emails selbst programmieren
http:/www.aspheute.com/artikel/20001009.htm
Downloads per Email verschicken
http:/www.aspheute.com/artikel/20000330.htm
Eine einfache Newsletter Applikation
http:/www.aspheute.com/artikel/20010503.htm
Email versenden mit AspMail
http:/www.aspheute.com/artikel/19990809.htm
Emails versenden mit ASPEmail
http:/www.aspheute.com/artikel/20010219.htm
Html Emails mit Dundas Mailer verschicken
http:/www.aspheute.com/artikel/20010625.htm
Mit PGP verschlüsselte e-Mails senden
http:/www.aspheute.com/artikel/20000912.htm

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.