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

Nachrichten an Newsserver (NNTP) mittels CDOSYS senden

Geschrieben von: Christian Koller
Kategorie: ASP Tricks

This printed page brought to you by AlphaSierraPapa

Wie bereits im Artikel Emails mittels CDOSYS versenden erwähnt, kann man News (Nachrichten) von einem Windows 2000 Server an einen Newsgroup Server mittels NNTP (Network News Transport Protocol) versenden. Für diejenigen, die den vohergegangenen Artikel nicht gelesen haben: CDOSYS steht für Collaboration Data Objects for Windows 2000 Server.

Die benötigte Funktionalität um eine Nachricht an eine beliebige Newsgroup zu senden, wird vollständig von der CDOSYS Komponente zur Verfügung gestellt. Da CDOSYS Teil des Windows 2000 Server Betriebsystems ist, kann es von jeder ASP Seite aus, die auf einem IIS 5.0 gehostet wird, aufgerufen und benutzt werden.

Um in ASP eine NNTP Nachricht zu generieren, greift man auf das CDO.Message Objekt der CDOSYS Komponente zurück. Man weist dann die Eigenschaften und den Inhalt der NNTP Nachricht den entsprechenden Eigenschaften des CDO.Message Objektes zu. Da CDOSYS sehr flexibel in der Art und Weise ist, wie und wohin eine Nachricht gesendet werden kann, stellt man mittels CDO.Configuration ein, daß das Message Objekt eine Newsgroup-Nachricht an einen externen Server sendet. Ausserdem gibt man den Namen der Newsgroup sowie dem Domain oder die IP Adresse und den Port des Newsservers an.

Hier ein kurzer Abriss über die wichtigsten Eigenschaften des CDO.Message Objektes:

To Gibt den Empfänger der Nachricht an.
From Enthält den Absender und für gewöhnlich auch die Email Adresse des Absenders.
Newsgroups Gibt die Empfänger-Newsgroup(s) an.
Subject Betreff der Nachricht
TextBody Inhalt der Nachricht

Die zum Versenden einer News benötigten Eigenschaften des Message Objektes sind einfach zu beschreiben. Hingegen sind die Konfigurationsmöglichkeiten und dementsprechend die Anzahl der Felder des Configuration Objektes bei weitem zu umfangreich um diese hier zu besprechen. Bitte benutzen Sie die Windows 2000 Platform SDK Dokumentation (die auch in der MSDN Dokumentation enthalten ist) um die Felder und Werte des Configuration Objectes für den jeweiligen Einsatzzweck des CDO.Message Objektes nachzuschlagen.

Anschaulicher als jede Theorie ist natürlich die Praxis. Daher möchte ich hier eine ASP Datei präsentieren, die eine einfache Nachricht an einen externen Newsgroup Server sendet.

Zum Senden einer Nachricht benötigt man im ASP Skript zwei CDOSYS Objekte: Message und Configuration. Die Nachricht an die Newsgroup wird vom Message Objekt repräsentiert. Daher setzt man mittels Message Eigenschaften die Eigenschaften und den Inhalt der Nachricht fest.

Mittels Configuration Objekt legt man fest, wie und wohin die Nachricht versendet werden soll. In unserem Fall kann die Nachricht an einen beliebigen externen Server verschickt werden. Das folgende Beispiel demonstriert anonymes Posting.

<% ' 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

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

' Nachrichten Eigenschaften festlegen
With objMessage
   .To         = "empfanger@aspheute.com"
   .From       = "absender@internet.net"
   .Newsgroups = "ASP.developer.CDOSYS"
   .Subject    = "Betreff"
   .TextBody   = "Nachricht"
End With          

' Konfigurieren:
  ' Newsgroup Server: news.domain.com
objConfig.Fields(cdoNNTPServer) = "news.domain.com"
  ' News Port : 119 (Standard bei NNTP Server)
objConfig.Fields(cdoNNTPServerPort) = 119
  ' Authentifizierung am Newsgroup Server:  Keine
objConfig.Fields(cdoNNTPAuthenticate) = cdoAnonymous
  ' Nachricht an externen Newsgroup Server verschicken
objConfig.Fields(cdoPostUsingMethod) = cdoPostUsingPort

' Konfiguration updaten
objConfig.Fields.Update

' Konfiguration an Nachricht binden
Set objMessage.Configuration = objConfig

' Nachricht zu Newsgroups-Server senden:
' Error Handling waehrend dem Versenden
On Error Resume Next

' CDO-Nachricht an Newsgroup Server senden
objMessage.Post


If Err.Number = 0 Then
   Response.Write("Die Nachricht wurde versendet!")
Else
   Response.Write("Waehrend des Versendens ist " & _
   "ein Fehler aufgetreten.")
   Err.Number = 0
End If
On Error Goto 0

%>
</body>
</html>

Um das Skript lokal auf Ihrem IIS 5.0 Server testen zu können, müßen Sie für die Internet Information Services die NNTP Server Unterstützung installiert haben. Diese ist Teil des IIS und daher auch Teil des Windows 2000 Server Betriebssystem.

Installation des NNTP Service auf Windows 2000 Server

Um festzustellen, ob Ihr IIS NNTP Sites unterstützt, öffen Sie den Internet Services Manager, zu finden im Start Menü unter Programme, Administrations Tools. Klicken Sie mit der rechten Maustaste auf Ihren Server und stellen Sie fest, ob unter Neu der Punkt "NNTP Virtual Server.." existiert (siehe Bild 1).


Bild 1: Internet Services Manager

Sollte der Punkt nicht vorhanden sein, so installieren Sie den NNTP Service. Gehen Sie dazu zum Control Panel und starten Sie "Add/Remove Programms".

Im sich öffnenden Fenster (Bild 2) wählen Sie "Add/Remove Windows Component" und der Windows Component Wizard erscheint.


Bild 2: Add/Remove Programms

Wählen Sie "Internet Information Services (IIS)" und klicken Sie auf den Button "Details" (siehe Bild 3).


Bild 3: Windows Component Wizard

Im erscheinenden Fenster können Sie nun den NNTP Service installieren (siehe Bild 4).


Bild 4: Installation des NNTP Servers

Nachdem der NNTP Service installiert ist, können Sie zu Testzwecken einen NNTP Virtual Server anlegen.

Erstellen eines NNTP Virtual Server

Zuerst müssen Sie zwei Verzeichnisse auf Ihrem Webserver anlegen. Eines wird benötigt um die internen Server Dateien des NNTP Servers zu speichern, das zweite Verzeichnis speichert alle Newsgroup Nachrichten.

Nachdem die zwei Verzeichnisse angelegt sind installieren Sie einen neuen (virtuellen) NNTP Server im IIS.

Öfnnen Sie dazu den Internet Services Manager und klicken Sie auf das Icon, das Ihren Webserver symbolisiert. Nun wählen Sie im Menü (unter Action oder mit der rechten Maustaste) New, NNTP Virtual Server. Darauf öffnet sich der New NNTP Virtual Server Wizard. Geben Sie eine Beschreibung des NNTP Servers ein, z.B. NNTP Test. Danach weisen Sie dem NNTP Server eine IP Adresse Ihres Servers zu. Der Port sollte üblicherweise auf den Standardwert 119 gesetzt werden (siehe Bild 5).


Bild 5: New NNTP Virtual Server Wizard

Geben Sie den Pfad zum Verzeichnis an, das die NNTP Dateien speichern soll. Wählen Sie File System als Speichermedium.

Wählen Sie das Verzeichnis, das die Newsgroup Nachrichten beinhalten soll. Schon haben Sie einen neuen NNTP Server installiert.

Um nun noch eine Newsgroup auf dem Server einzurichten, klicken Sie auf das Icon des Newsgroup Servers. Klicken Sie nun mit der rechten Maustaste auf "Newsgroups" und wählen Sie New, Newsgroup (siehe Bild 6).


Bild 6: Neue Newsgroup anlegen

Der New Newsgroup Wizard öffnet sich und Sie können den Namen für die Newsgroup (zum Beispiel NNTP.Test) angeben.

Nachdem die Newsgroup angelegt ist, ist diese unter der Newsgroups Eigenschaft des NNTP Virtual Servers im Internet Service Manager sichtbar (Bild 7).


Bild 7: Angelegte Newsgroups im Internet Service Manager

Nun können Sie die angelegte Newsgroup zum Testen mit CDOSYS benutzen. Um Nachrichten aus der Newsgroup wieder auszulesen, um zum Bespiel sicherstellen zu können, daß eine Nachricht in der Newsgroup angekommen ist, benutzen Sie einen ganz gewöhnlichen Newsgroup Reader, wie er zum Beispiel im Netscape Communicator als Messenger bekannt ist (siehe Bild 8).


Bild 8: Netscape Communicator Messenger mit Newsgroup

Schlußbemerkung

Mit CDOSYS hat man als Entwickler für ASP unter IIS 5.0 ein hervorragendes Werkzeug um aus ASP Seiten heraus nicht nur Emails sondern auch News an Newsgroups schicken zu können.

This printed page brought to you by AlphaSierraPapa

Download des Codes

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

Verwandte Artikel

Emails mittels CDOSYS versenden
http:/www.aspheute.com/artikel/20000919.htm

Links zu anderen Sites

MSDN Dokumentation
http://msdn.microsoft.com/

 

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