DevTrain

Autor: Bernhard Elbl

Remote-Email-Access mit CDO

Mit CDO kann man "einfach" Emails schreiben, senden, verändern und usw. Nur CDO ist nicht gleich CDO. Zu CDO gibt es ganz verschiedene Komponenten: CDO 1.2.1, CDO 1.2 for Windows-NT-Server, CDO for Windows 2000, CDO for Exchange 2000... So und was brauch ich jetzt? Da die Unterschiede nicht so schnell aufgezählt sind, hier ein paar Links zum Nachschlagen.

http://support.microsoft.com/support/kb/articles/Q177/8/50.ASP
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncdsys/html/cdo_roadmap.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmag00/html/exchange.asp


Das Thema
Mein Thema heute befasst sich mit CDO 1.2.1, die uns ein umfassendes Object-Modell für authentifizierten Zugriff auf User-Profile bereitstellt. Somit gibt uns diese CDO-Version die Möglichkeit, eine Remote-Email-Access Application zu erstellen, damit z.B. Benutzer von extern kurz übers Internet auf Ihre Mail-Folders zugreifen können. Der Zugriff auf Posteingang(Inbox) und Postausgang(Outbox) jedes Benutzers wird bereitgestellt . Ausserdem werden öffentliche Ordner, gesendete und gelöschte Objekte sowie Aufgaben, Kalendar und Notizen über das "Infostores"-Objekt bereitgestellt.
Kurz:
In einem Wort grob umfasst, was man damit machen kann ist: Outlook


Die Komponente wird ausgeliefert mit:
- Exchange 5.5,
- Outlook 98,
- Outlook 2000,
- Exchange 2000 Server
CDO 1.2 Library wird von der Datei "CDO.DLL" bereitgestellt.

CDO kann man natürlich auch mit ASP verwenden.
Hier ein Beispiel zum Auflisten aller Emails des Posteingangs...
1. Einstellungen in IIS

Die Sicherheitseinstellungen sollten nach bedarf eingestellt werden. z.B. Standard-Authentifizierung...
2. Programmierung
Verweis auf die CDO-Library setzen und VB-Script...
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
Set oSession = Server.CreateObject("MAPI.Session")
oSession.Logon "Bernhard Elbl","password" 'ProfileName, ProfilePassword
Set oMessages = oSession.Inbox.Messages ' Zugriff auf Posteingang

For Each oMessage In oMessages ' Alle EMails über Messages-Collection auflisten
 Response.Write oMessage.Subject & "<br>"
Next
oSession.Logoff
Set oSession = Nothing
%>
</BODY>
</HTML>


Für den ProfileNamen und Password sollte natürlich eine Anmelde-Form erstellt werden. Die zwei Argumente braucht man bei Exchange-Server! Wer keinen Exchange hat, braucht sie nicht angeben und übergibt einfach zwei leere Strings.

Wer jetzt ein Projekt mit mehreren Seiten erstellt, wird jetzt jedes mal das LogOn/LogOff durchführen müssen. Die Objekt-Instanz kann aber auch auf ein Session-Objekt übertragen werden (Voraussetzung dafür ist allerdings, dass der Client Cookies unterstützt!!!)...
beim ersten mal...
<%
Set oCDOSession = Server.CreateObject("MAPI.Session")
oCDOSession.Logon "Bernhard Elbl","password" 'ProfileName, ProfilePassword
...
Set Session("oCDOSession") = oCDOSession
Set oCDOSession = Nothing
%>

auf allen anderen Seiten...
<%
Set oCDOSession = Session("oCDOSession")
oCDOSession.Inbox...
%>


TIP!
Wenn CDO keine Werte zurückliefert, obwohl alle Voraussetzungen geben wären, dann kann das an der Registrierung der "CDO.DLL" liegen, da manche Programm-Installationen CDO deregistrieren. Das kann man allerdings sehr leicht wieder rückgangig machen...
CommandLine:
regsvr32 "C:...CDO.DLL"
Und alles geht wieder!


Erfasst am: 11.10.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=637
© Copyright 2003 ppedv AG - http://www.ppedv.de