Sok más egyéb mellett elkezdtem belepiszkálni némi statisztika gyártásba az Exchange Store-ra vonatkozóan. Miután levelekre, csatolmányokra időpontokra vonatkozó adatokra van szükségem, kénytelen vagyok beleolvasni a mailboxokba. Ezt tehetném WebDav-al, vagy az Exchange OLE DB providerrel ADO-n keresztül. Ez utóbbit választottam, mert ezzel már játszottam korábban. Úgy gondoltam, hogy tesztelgetni egyszerűbb a kliens oldalon, így elindítottam az első kis tesztprogramomat, ami valami ilyesmi volt:
BaseURLStr = "http://mail1/exchange/zoli/";
Folder = "Inbox";
var SelectStr;
var ExchConn = new ActiveXObject("ADODB.Connection");
var ExchRS = new ActiveXObject("ADODB.Recordset");
SelectStr = "SELECT \"DAV:displayname\", "+
"FROM SCOPE('SHALLOW TRAVERSAL OF \"" +
encodeURI(BaseURLStr + Folder) + "\"') "+
"WHERE \"DAV:ishidden\" = false";
ExchConn.Provider = "ExOLEDB.DataSource";
ExchConn.Open(BaseURLStr);
ExchRS.Open(SelectStr, ExchConn);
for(;!ExchRS.EOF;ExchRS.MoveNext())
{
WScript.Echo(ExchRS.Fields("DAV:displayname").Value);
}
ExchRS.Close();
ExchConn.Close();
Meglepetten tapasztaltam a következő hibaüzenetet:
ADODB.Connection: Provider cannot be found. It may not be properly installed.
Hoppá, ezek szerint az ExOLEDB provider csak az Exchange szerveren van telepítve. Elkezdtem túrkálni a neten, hogyan lehetne felrakni ezt a kliensre. Arra jutottam, hogy sehogy. Helyette az MSDAIPP providert lehet használni. Ezek után a fenti kód egyetlen sorában módosul:
ExchConn.Provider = "ExOLEDB.DataSource";
helyett
ExchConn.Provider = "msdaipp.dso";
Ezzel a kliens oldalról is el lehet érni a szervert, mindösszesen arra kell odafogyelni, hogy csak a http:// uri-t szabad használni a file:// uri-t nem.
Infók hozzá: