HOWTO: EWS: Consume Exchange Web Service from VBScript

Yes you can consume Exchange Web Service using VBScript or any language / platform which support HTML.

In this sample, I have used XMLHTTP to send/receive soap request/response. Then I have used MSXML Document to parse the XML returned by the server to get the response code.

I have converted my recently posted sample, HOWTO: EWS: Disable Out-of-office / OOF message to VBScript code.

Const strUrl = "https://Your-Cas-Server/ews/exchange.asmx"

Const strUser = "Username"

Const strPass = "Password"

Const strDom = "Domain"

Const strEmailAddress = "youremail@domain.com"

Dim oXml

Dim xmlDoc

Dim strXmlData

Set oXml = CreateObject("MSXML2.XMLHTTP")

Set xmlDoc = CreateObject("MSXML2.DOMDocument")

strXmlData = "<?xml version=""1.0"" encoding=""utf-8""?>"

strXmlData = strXmlData & "<soap:Envelope xmlns:soap=""https://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""https://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""https://www.w3.org/2001/XMLSchema"">"

strXmlData = strXmlData & " <soap:Body>"

strXmlData = strXmlData & " <SetUserOofSettingsRequest xmlns=""https://schemas.microsoft.com/exchange/services/2006/messages"">"

strXmlData = strXmlData & " <Mailbox xmlns=""https://schemas.microsoft.com/exchange/services/2006/types"">"

strXmlData = strXmlData & " <Address>" & strEmailAddress & "</Address>"

strXmlData = strXmlData & " </Mailbox>"

strXmlData = strXmlData & " <UserOofSettings xmlns=""https://schemas.microsoft.com/exchange/services/2006/types"">"

strXmlData = strXmlData & " <OofState>Disabled</OofState>"

strXmlData = strXmlData & " <ExternalAudience>All</ExternalAudience>"

strXmlData = strXmlData & " <InternalReply>"

strXmlData = strXmlData & " <Message />"

strXmlData = strXmlData & " </InternalReply>"

strXmlData = strXmlData & " <ExternalReply>"

strXmlData = strXmlData & " <Message />"

strXmlData = strXmlData & " </ExternalReply>"

strXmlData = strXmlData & " </UserOofSettings>"

strXmlData = strXmlData & " </SetUserOofSettingsRequest>"

strXmlData = strXmlData & " </soap:Body>"

strXmlData = strXmlData & "</soap:Envelope>"

oXml.open "POST", strUrl, False, strDom & "\" & strUser, strPass

oXml.setRequestHeader "Content-Type", "text/xml"

oXml.send strXmlData

If oXml.Status = "200" Then

If xmlDoc.loadXML(oXml.responseText) Then

If xmlDoc.documentElement.getElementsByTagName("ResponseMessage").Item(0).Attributes.getNamedItem("ResponseClass").Text = "Success" Then

MsgBox "Oof Disabled"

Else

MsgBox "Oof Cannot be disabled" & vbCrLf & xmlDoc.xml

End If

End If

Else

MsgBox "Error: " & oXml.Status & " - " & oXml.statusText

End If

Keywords: VBScript, MSXML, XMLHTTP, SetUserOofSettings, ExchangeImpersonation, Exchange Web Services, Exchange 2007, Out Of Office