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

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Emails senden mit CDONTS

Geschrieben von: Christian Koller
Kategorie: ASP Grundlagen

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?

  • Man kann "Plain-Text"-Nachrichten, aber auch "HTML"-Nachrichten versenden.
  • Mehrere Empfänger, CC und BCC pro Email sind möglich.
  • Dateien können als Attachements an Emails angehängt werden.
  • Die Dringlichkeit der Email ist einstellbar.
  • Zusätzliche Header (wie Reply-To) könen über die Value Eigenschaft generiert werden.

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
Das Versenden von Emails selbst programmieren
Downloads per Email verschicken
Eine einfache Newsletter Applikation
Email versenden mit AspMail
Emails versenden mit ASPEmail
Html Emails mit Dundas Mailer verschicken
Mit PGP verschlüsselte e-Mails senden

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.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©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.