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

Emails mittels CDOSYS versenden

Geschrieben von: Christian Koller
Kategorie: Komponenten

This printed page brought to you by AlphaSierraPapa

Mit dem Erscheinen von Windows 2000 und IIS 5.0 steht dem ASP Programmierer eine neue Möglichkeit offen um Emails zu versenden. Mit dem Betriebssystem Windows 2000 Server wird die "Collaboration Data Objects" (CDO) Library (CDOSYS.DLL) ausgeliefert, die Nachrichten (Emails oder Newsgroupnachrichten) über SMTP (Simple Mail Transfer Protocol) oder NNTP Protokoll versenden kann.

CDO für Windows 2000 (auch CDO 2.0 oder CDOSYS), wurde von Grund auf neu programmiert und ist nur unter Windows 2000 Server verfügbar. Da es Teil des Betriebssystems ist, muß es, im Gegensatz zu ActiveX Mail-Komponenten, nicht erst am Webserver installiert werden. Vorhandene Mailapplikationen, die mit dem altbekannten CDONTS (CDO für NT Server) arbeiten, können auch unter Windows 2000 und IIS 5.0 weiterverwendet werden.

Warum sollte man CDOSYS in einer ASP Applikation verwenden?

Für die folgenden Applikationen ist CDOSYS sehr gut geeignet:

Genug der grauen Theorie! Für den ASP-Programmierer ist eigentlich nur eines wichtig: Wie setzte ich CDOSYS in einer ASP-Seite ein?

Emailversand aus ASP Seiten mittels CDOSYS

Gleich in medias res: Die CDOSYS Library stellt das Message Objekt zur Verfügung, das eine Internetnachricht (zum Beispiel Email) repräsentiert. Um festzulegen, wie und wohin die Nachricht gesendet wird, verwendet man das Configuration Objekt. Durch dieses Objekt kann man die Konfiguration einstellen, an welchen Emailserver die Email versendet wird und welchen Port man am SMTP-Server anspricht.

Ein (fast) fertiges ASP Skript, das die CDOSYS Library zum Versenden einer Email benutzt, ist das folgende:

<% ' Typeinformationen und CDOSYS Konstanten 
' ueber das CDOSYS und das ADO 2.5 Objekt zugaenglich machen:
%>
<!--METADATA TYPE="typelib" 
UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" 
NAME="CDO for Windows 2000 Library" -->
<!--METADATA TYPE="typelib" 
UUID="00000205-0000-0010-8000-00AA006D2EA4" 
NAME="ADODB Type Library" -->

<html>
<body>
<%

Dim strFrom, strTo, strSubject, strBody
Dim objMessage, objConfig

' Absender
strFrom = "user@aspheute.com"
' Empfaenger
strTo   = "redaktion@aspheute.com"
' Betreff
strSubject = "Testnachricht"
' Emailtext
strBody    = "Dies ist eine Testnachricht:" & vbCrLf & _
	"CDOSYS hat funktioniert!"

' Message und Configuration Objekte instanzieren
Set objMessage = CreateObject("CDO.Message")
Set objConfig = CreateObject("CDO.Configuration")

' Konfigurieren:
' Nachricht an externen Mailserver verschicken
objConfig.Fields(cdoSendUsingMethod) = cdoSendUsingPort
' Emailserver: mail.domain.com
objConfig.Fields(cdoSMTPServer) = "mail.domain.com"
' Emailport: 25 (Standard bei SMTP Server)
objConfig.Fields(cdoSMTPServerPort) = 25
' Authentifizierung am Emailserver: Keine
objConfig.Fields(cdoSMTPAuthenticate) = cdoAnonymous

' Configuration updaten
objConfig.Fields.Update

' CDO-Nachricht erstellen:
' Konfiguration an Nachricht binden
Set objMessage.Configuration = objConfig 

objMessage.To       = strTo      ' Empfaenger
objMessage.From     = strFrom    ' Absender
objMessage.Subject  = strSubject ' Betreff
' Versender der Nachricht:
' objMessage.Sender   = "CDOSYS@aspheute.com" 
objMessage.TextBody = strBody    ' Nachricht

' Error Handling waehrend dem Versenden:
On Error Resume Next

' CDO-Nachricht senden
objMessage.Send

If Err.Number = 0 Then
  Response.Write("Die Nachricht wurde versendet!")
Else
  Response.Write("Waehrend des Versendens ist " & _
  "ein Fehler aufgetreten, ueberpruefen Sie die " & _
  "Verbindung zum Internet oder dem Mailserver!" & _
  "<br> Moeglicherweise akzeptiert der Emailserver " & _
  "Ihre Nachricht nicht. ")
  Err.Number = 0
End If
On Error Goto 0

%>
</body>
</html>

Dieses Programm erstellt ein CDOSYS Message Objekt, und setzt seine To, From, TextBody Eigenschaften um die Emailnachricht zu erstellen. Die Email wird schließlich mittels der Send Methode zum SMTP (EMail) Server geschickt, von wo aus Sie zu ihrem tatsächlichen Empfänger gelangt.

Die METADATA TYPE="typelib" Einfügungen am Anfang des Skripts sind notwendig um die CDO-Konstanten (wie cdoSendUsingMethod, cdoSMTPServer oder cdoSendUsingMethod) benutzen zu können.

Das Skript benutzt der Einfachheit halber die Variablen strFrom, strTo, strSubject, strBody um die Emaildaten wie Absender, Empfänger, Betreff oder Nachrichtentext zu speichern, bevor Sie den Message Objekt Eigenschaften To, From oder TextBody zugewiesen werden.

Die Konfiguration des CDOSYS Message Objektes zum Versenden der Email erreicht man durch das Erstellen eines CDOSYS Configuration Objektes. Über die Eigenschaften dieses Configuration Objektes kann man, wie im Beispiel gezeigt, unter anderem den Hostnamen und den SMTP Port des Emailservers einstellen.

Während des Sendens der Email mittels Message.Send können verschiedene Fehler auftreten. Möglicherweise ist der Emailserver nicht erreichbar, oder der Server akzeptiert nur Nachrichten mit einem bestimmten Empfänger oder Absender. Um dies abfangen zu können, benutzt das Skript einen Error-Handling Code. Ein möglicher Fehler wird mittels On Error Resume Next abgefangen. Ein Laufzeitfehler kann im Err Objekt über die Number Eigenschaft festgestellt werden. Das Kommando On Error Goto 0 setzt das Error Handling wieder außer Kraft.

Die gesendete Mailnachricht könnte dann schlußendlich in der folgenden Form in der Mailbox des Empfängers landen (Content mit allen Headern):

From: <user@aspheute.com>
To: <redaktion@aspheute.com>
Subject: Testnachricht
Date: Mon, 18 Sep 2000 21:06:41 +0100
Message-ID: <000e01c021ab$f5fc70e0$c801a8c0@thunder>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft CDO for Windows 2000
Thread-Index: AcAhq/X84yzuz864RiyB3kA4fIJtxg==
Content-Class: urn:content-classes:message
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700
X-RCPT-TO: <redaktion@aspheute.com>
X-UIDL: 269027218
Status: U

Dies ist eine Testnachricht:
CDOSYS hat funktioniert!

Schlußbemerkung

Auf jedem IIS 5.0 (unter Windows 2000 Server) steht Ihnen eine sehr schnelle "Komponente" zum Vesenden von Emails zur Verfügung: CDOSYS.DLL! Die Funktionsweise von CDOSYS ist ähnlich wie die von CDONTS.

Da CDOSYS nicht nur Emails und Newsgroupnachrichten in den vielfältigsten Formaten über lokale oder externe Webserver versenden kann, ist es empfehlenswert, bei Webapplikationen die von dieser Funktionalität Gebrauch machen, die Verwendung von CDOSYS in Betracht zu ziehen.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20000919.zip

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
Emails mittels CDOSYS versenden
http:/www.aspheute.com/artikel/20000919.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
Nachrichten an Newsserver (NNTP) mittels CDOSYS senden
http:/www.aspheute.com/artikel/20000928.htm

Links zu anderen Sites

Collaboration Data Objects Roadmap
http://msdn.microsoft.com/library/techart/cdo_roadmap.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.