Emails mittels CDOSYS versenden
Geschrieben von: Christian Koller 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 CDOSYSGleich 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ßbemerkungAuf 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. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
ACT MetaMailer - Mails verschicken leicht gemacht Links zu anderen Sites
Collaboration Data Objects Roadmap 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 |