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

Auslesen von Emails aus einem POP3 Account

Geschrieben von: Christian Koller
Kategorie: Komponenten

Obwohl es auf den ersten Anschein komisch anmutet Emails via ASP auszulesen, so kann es für gewisse automatisierte Vorgänge doch sehr nützlich werden (als Beispiel sei hier ein Web-basiertes Support-System genannt). Allerdings - um Emails auslesen zu können, braucht man eine Komponente, die das von den meisten Emailservern gesprochene POP3 (PostOffice Protocol) Protokoll versteht. Mit ASP alleine geht es nicht.

Dieser Artikel soll eine Einführung in die Verwendung von POP3-Komponenten geben, exemplarisch gezeigt an der AspPOP3 Komponente der Firma ServerObjects. Diese Komponente erlaubt das Auslesen von Emails (inklusive Attachments) von einem beliebigen POP3-Server über das Internet.

Installation der AspPOP3 Komponente

Um die Komponente von ASP (oder einem anderen Programm, das ActiveX Komponenten unterstützt) nutzen zu können, muß die Komponente mit Hilfe des Regsvr32 Tools registriert werden.

Dazu verschieben Sie die DLL pop3svg.dll in ein Unterverzeichnis Ihrer Wahl. Danach gehen Sie in die Eingabeaufforderung und ändern das augenblickliche Verzeichnis in das Unterverzeichnis, das die DLL enthält. Rufen Sie nun Regsvr32 durch folgenden Befehl auf:

regsvr32 pop3svg.dll 

Nun sollte die Komponente einsatzbereit sein.

Wenn Sie auf einem fremden Server hosten, so muß der Webmaster für Sie diese Schritte erledigen.

Einfaches Auslesen einer Email

Zuerst will ich Ihnen vorführen, wie einfach es prinzipiell ist, eine Email auszulesen. Dazu müssen Sie nur die folgenden Schritte ausführen:

  • Erstellen des AspPOP3 Objektes
  • Setzen der nötigen Eigenschaften des Objektes
  • Aufruf der Retrieve Methode um die Email(s) zu lesen

Das folgende kleine Beispiel liest eine Email aus und zeigt die einzelnen Teile der Nachricht an:

<%
Set Mailer = Server.CreateObject("POP3svg.Mailer")
Mailer.RemoteHost = "mail.domain.com"
Mailer.UserName   = "Benutzername"
Mailer.Password   = "Passwort"


' Verbindung zum Server oeffnen
Mailer.OpenPop3

' Die Anzahl der Nachrichten pruefen:
If Mailer.MessageCount > 0 Then
   ' erste Email auslesen:
   Mailer.Retrieve 1

   'Die einzelnen Teile der Nachricht auslesen:
   strM = "Date: " & Mailer.Date & vbcrlf & _
   "Subject: " & Mailer.Subject & vbcrlf & _
   "From: " & Mailer.FromName & _
   Mailer.FromAddress & vbcrlf & vbcrlf & _
   Mailer.BodyText & vbcrlf
End If

strM = Server.HTMLEncode(strM)
Response.Write(Replace(strM,vbcrlf,"<BR>" & vbcrlf))
%>

Die Nachricht, die die Methode Retrieve am Server ausliest, wird vom Parameter der Methode bestimmt. Retrieve 1 liest die erste Nachricht am Mailserver aus. Mit der Eigenschaft MessageCount kann man bestimmen, wieviele Nachrichten gesamt am Emailserver liegen - und somit den höchsten Index ermitteln, der für die Retrieve Methode noch zulässig ist.

Um einen Überblick über alle Nachrichten im Account zu geben, ist es sinnvoll, nur Datum, Absender und Betreff (Subject) auszulesen und anzuzeigen. Danach läßt man den Benutzer wählen, welche Email er vollständig auslesen will. Das folgende Script zeigt, wie man diesen Vorgang in ASP implementieren kann:

<%
Set Mailer = Server.CreateObject("POP3svg.Mailer")
Mailer.RemoteHost = "mail.domain.com"
Mailer.UserName   = "Benutzername"
Mailer.Password   = "Passwort"

' Verbindung zum Server oeffnen
Mailer.OpenPop3

self = Request.ServerVariables("SCRIPT_NAME")
id = Request.QueryString("Id")

If id <> 0 Then
   ' Spezifische Nachricht anzeigen
   Mailer.Retrieve id
   Response.Write("Datum: ")
   Response.Write(Server.HTMLEncode(Mailer.Date) & "<BR>")
   Response.Write("Absender: ")
   strAbsender = Mailer.FromAddress & " " &Mailer.FromName
   Response.Write(Server.HTMLEncode(strAbsender) & "<BR>")
   Response.Write("CC: ")
   strCC = Mailer.CC
   Response.Write(Server.HTMLEncode(strCC) & "<BR>")
   ' Text:
   Response.Write("<BR><BR>")
   strText = Server.HTMLEncode(Mailer.BodyText)
   strText = Replace(strText,vbcrlf,"<BR>" & vbcrlf)
   Response.Write(strText)

Else
   ' Email Ueberblick anzeigen
   Response.Write("<TABLE>" & vbcrlf)
   Response.Write("  <TR>" & vbcrlf)
   Response.Write("    <TH>" & vbcrlf)
   Response.Write("Datum")
   Response.Write("    </TH>" & vbcrlf)
   Response.Write("    <TH>" & vbcrlf)
   Response.Write("Absender")
   Response.Write("    </TH>" & vbcrlf)
   Response.Write("    <TH>" & vbcrlf)
   Response.Write("Betreff")
   Response.Write("    </TH>" & vbcrlf)
   Response.Write("    <TH>" & vbcrlf)
   Response.Write(" ")
   Response.Write("    </TH>" & vbcrlf)
   Response.Write("  </TR>" & vbcrlf)

   For intI = 1 to Mailer.MessageCount 
      Mailer.Retrieve intI
      Response.Write("  <TR>" & vbcrlf)
      Response.Write("    <TD>" & vbcrlf)
      Response.Write(Server.HTMLEncode(Mailer.Date))
      Response.Write("    </TD>" & vbcrlf)
      Response.Write("    <TD>" & vbcrlf)
      Response.Write(Server.HTMLEncode(Mailer.FromAddress))
      Response.Write("    </TD>" & vbcrlf)
      Response.Write("    <TD>" & vbcrlf)
      Response.Write(Server.HTMLEncode(Mailer.Subject))
      Response.Write("    </TD>" & vbcrlf)
      Response.Write("    <TD>" & vbcrlf)
      Response.Write("<A HREF=""" & self & "?id=" & intI)
      Response.Write(""">Nachricht lesen</A>" & vbcrlf)
      Response.Write("    </TD>" & vbcrlf)
      Response.Write("  </TR>" & vbcrlf)
   Next
   
   Response.Write("</TABLE>")
End If


Mailer.ClosePop3
Set Mailer = Nothing
%>

Dieses ASP Script zeigt einen Überblick über alle Emails, indem es Datum, Absender und Betreff (Subject) jeder Email anzeigt (Else-Zweig des If-Konstrukts). Will man eine spezifische Nachricht lesen, so klickt man im Überblick auf "Nachricht lesen" neben den Headern der Nachricht. Dadurch ruft man das Script noch einmal auf, wobei die aufgerufene URL im QueryString die Nachrichten ID enthält.

Bei jedem Aufruf des Scripts wird nun geprüft, ob sich eine Nachrichten-ID im Querystring befindet. Dies geschieht durch Auslesen von Request.QueryString("id") und Speichern des Wertes in der Variablen id. Die entsprechende Nachricht wird dann durch Retrieve id vom POP3 Server ausgelesen und der vollständige Inhalt angezeigt.

Eine kleine Mahnung zur Vorsicht: Wenn sich sehr viele Emails auf dem Email- Account befinden, so kann das Auslesen aller Emails sehr lange dauern. Besser ist es, nur eine bestimmte Anzahl von Emails auszulesen und dem Benutzer zu präsentieren. Dies gilt auch, wenn man eigentlich nur den Absender und den Betreff der Emails anzeigen will.

Schlußbemerkung

Neben dem Auslesen des Emailtextes und anderer einfacher Emaileigenschaften bietet die AspPOP3 Komponente noch andere Möglichkeiten. So kann man Attachments auslesen und am Webserver speichern, oder Nachrichten vom POP3-Server löschen. Ein vollständiges Online-Emailmanagement in ASP ist damit in greifbarer Nähe.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

ACT MetaMailer - Mails verschicken leicht gemacht
Html Emails mit Dundas Mailer verschicken
Mit PGP verschlüsselte e-Mails senden

Links zu anderen Sites

AspPOP3 Komponente

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.