Wednesday, July 14, 2004

Scripting with OMA - Outlook Mobile Access

Continuing on from some of my other posts about using the Microsoft.XMLHTTP object to do some automation scripting with OWA I've started at looking at doing this in OMA as well. OMA is a lot less feature rich environment because it's designed for mobile devices but from a automation perspective this can be an advantage. There's very little information out there that covers how OMA work's from an indepth technical perspective (well that I could find anyway). But the basics of it is that its a ASP .NET application and from the reverse engineering I've looked at it passes some tokens and GUID looking parameters to make it work. As a starter script I created a simple script that uses the Microsoft.XMLHTTP object to list the contents of the inbox using OMA. Unlike OWA where you can just post a single command to the IIS server with OMA I found it required two requests. The first request logs onto OMA and gets the front page and more importantly a little token (the ufps thingy) that you must send with the post request to get it to work. I found you can specify your own GUID and this seems to work okay I guess as long as you are not using multiple clients with the same GUID. The only trick I found is that you must specify authentication in your open statement. I also haven't worked out how to target a mailbox other then the authentication user.

szXml = ""
Set ObjxmlHttp = CreateObject("Microsoft.XMLHTTP")
ObjxmlHttp.Open "get", "http://server/oma/(cvlbrraeffpq1xu5c013j055)/oma.aspx?", False, "domain\user", "password"
ObjxmlHttp.setRequestHeader "Accept-Language:", "en-us"
ObjxmlHttp.setRequestHeader "Content-type:", "application/x-www-UTF8-encoded"
ObjxmlHttp.setRequestHeader "Content-Length:", Len(xmlstr)
ObjxmlHttp.Send szXml
Wscript.echo ObjxmlHttp.responseText
slen = instr(ObjxmlHttp.responseText,"ufps") + 5
ufps = mid(ObjxmlHttp.responseText,slen,6)
szXml = "__EVENTTARGET=c00&__EVENTARGUMENT=c0&__V_ViewStateKey=0"
ostring = "http://server/oma/(cvlbrraeffpq1xu5c013j055)/oma.aspx?__ufps=" & ufps
ObjxmlHttp.Open "post",ostring , False, "domain\user", "password"
ObjxmlHttp.setRequestHeader "Accept-Language:", "en-us"
ObjxmlHttp.setRequestHeader "Content-type:", "application/x-www-form-urlencoded"
ObjxmlHttp.setRequestHeader "Referer:", "http://server/oma/(cvlbrraeffpq1xu5c013j055)/oma.aspx"
ObjxmlHttp.setRequestHeader "Content-Length:", Len(szXml)
ObjxmlHttp.Send szXml
Wscript.echo ObjxmlHttp.responseText