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?
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!
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
Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20000919.zip
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
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.