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 mittels CDOSYS versenden

Geschrieben von: Christian Koller
Kategorie: Komponenten

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?

  • CDOSYS ist extrem schnell und kann Emails sowohl an einen lokalen EMail Server als auch über das Internet (mittels SMTP) an einen Remote-Emailserver versenden. Dies macht CDOSYS speziell für ein großes Mailaufkommen wie Massenmailings, Newsletter, etc. interessant.
  • CDOSYS basiert auf den Internetstandards (SMTP, RFC 822) und erlaubt es auf vielfältige Art und Weise MIME/HTML Nachrichten zu erstellen und zu verwalten. SMTP und NNTP Protokolle werden voll unterstützt.
  • Da CDOSYS ActiveX-kompatible COM Interfaces zur Verfügung stellt, kann es in den verschiedensten Programmiersprachen und Windows Applikationen verwendet werden.
  • CDOSYS ist eng mit ADO (ActiveX Data Objects) verzahnt, sodaß man Nachrichten direkt aus ADO Streams oder anderen Datenbanken und Datenquellen mittels OLE DB und ODBC integrieren kann.
  • CDOSYS ist vollständig zu CDO für Windows Exchange 2000 Server kompatibel. Daher können Applikationen, die auf CDO für Windows 2000 basieren, problemlos auf CDO für Exchange 2000 umgestellt werden.
  • CDOSYS unterstützt verschiedene Standards, die auf dem RFC 822 (Einfache Internet Nachrichten) basieren. Solche Internet-Nachrichten können auf MIME (Multipurpose Internet Mail Extensions) und UUENCODE basieren

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

  • Massensendungen von Emails
  • Versenden von ganzen HTML Seiten inklusive Bilder und Links per Email

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.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

ACT MetaMailer - Mails verschicken leicht gemacht
Das Versenden von Emails selbst programmieren
Emails mittels CDOSYS versenden
Emails versenden mit ASPEmail
Html Emails mit Dundas Mailer verschicken
Nachrichten an Newsserver (NNTP) mittels CDOSYS senden

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.

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.