Отправка электронной почты с использованием VBScript через Outlook Anywhere - PullRequest
0 голосов
/ 07 декабря 2011

У меня неудачная задача отправки электронной почты через клиента, которому необходимо подключиться к Outlook Anywhere через VBScript. Возможно, я не понимаю правильную терминологию при работе с Exchange Server, поэтому ответ может уклоняться от меня просто потому, что я не знаю, что ищу, и после нескольких часов работы в Google я все еще не нашел ответа. *

Я не могу использовать SMTP, так как скрипт будет подключаться из многих мест / сетей, и они могут блокировать или не блокировать трафик через порт по умолчанию. Я не могу изменить порт по умолчанию, потому что сетевой администратор (который является фактическим клиентом) не изменит его.

Будут оценены любые указатели в правильном направлении.

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Если я правильно понимаю ваш вопрос, вы на самом деле хотите иметь возможность использовать установленную / работающую версию Outlook на клиентском компьютере для генерации и отправки сообщения электронной почты, которое он будет передавать любому настроенному MTA, который он использует, возможночерез Exchange Server он настроен на частную локальную сеть или через VPN, когда в общедоступной сети.Если это так, то, что вы хотите посмотреть, это использовать то, что называется «Автоматизация» в номенклатуре Microsoft.Для большинства языков сценариев и средств разработки вы можете сделать это через COM.В следующей статье Microsoft показано, как сделать это в VBA, что должно дать вам достаточно подробностей для использования почти как есть для VBScript.

http://support.microsoft.com/kb/209948

0 голосов
/ 08 декабря 2011

Ответ на мой вопрос частично находится на stackoverflow уже при следующем вопросе Способы отправки электронной почты через MS Exchange с VBScript .

Приведенный ниже код (VBA, но достаточно близкий к VBScript) просто отправляет SOAP-сообщение в веб-службу Exchange. Он был построен из различных фрагментов, найденных по всему Интернету (включая ссылки выше).

Option Explicit

' ---------------------------------------------------------
' CONFIGURATION - change as needed
' ---------------------------------------------------------
Const TARGETURL = "https://mail.XXXXX.com/ews/exchange.asmx"
Const USERNAME = "XXXXX\dnreply"
Const PASSWORD = "X1X2X3X4X!x@x#x$x%"

Sub SendMessageEWS()
    Dim SOAP
    SOAP = CreateMessageSOAP()

    ' Send the SOAP request, and return the response
    Dim oXMLHTTP, oXml

    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    Set oXml = CreateObject("MSXML2.DOMDocument")

    ' Send the request
    oXMLHTTP.Open "POST", TARGETURL, False, USERNAME, PASSWORD
    oXMLHTTP.setRequestHeader "Content-Type", "text/xml"
    oXMLHTTP.send SOAP

    If oXMLHTTP.Status = "200" Then
        ' Get response
        If oXml.LoadXML(oXMLHTTP.ResponseText) Then
            ' Success
            Debug.Print oXml.XML
        End If
    Else
        Debug.Print oXMLHTTP.ResponseText
        MsgBox "Response status: " & oXMLHTTP.Status
    End If

End Sub

Function CreateMessageSOAP()
    ' Normally this is done by using the DOM, but this is easier for a demo...
    Dim SOAPMsg

    SOAPMsg = SOAPMsg & "<?xml version='1.0' encoding='utf-8'?>"
    SOAPMsg = SOAPMsg & " <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:t='http://schemas.microsoft.com/exchange/services/2006/types' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>"
    SOAPMsg = SOAPMsg & "   <soap:Body>"
    SOAPMsg = SOAPMsg & "     <CreateItem MessageDisposition='SendAndSaveCopy' xmlns='http://schemas.microsoft.com/exchange/services/2006/messages'>"
    SOAPMsg = SOAPMsg & "         <SavedItemFolderId>"
    SOAPMsg = SOAPMsg & "             <t:DistinguishedFolderId Id='sentitems' />"
    SOAPMsg = SOAPMsg & "         </SavedItemFolderId>"
    SOAPMsg = SOAPMsg & "         <Items>"
    SOAPMsg = SOAPMsg & "             <t:Message>"
    SOAPMsg = SOAPMsg & "                 <t:Subject>Exchange Web Service E-Mail Test</t:Subject>"
' For HTML message body
    SOAPMsg = SOAPMsg & "                 <t:Body BodyType='HTML'><![CDATA[<h1>Test html body</h1>]]></t:Body>"
' For text message body
'    SOAPMsg = SOAPMsg & "                 <t:Body BodyType='Text'><![CDATA[Test text body]]></t:Body>"
    SOAPMsg = SOAPMsg & "                 <t:ToRecipients>"
    SOAPMsg = SOAPMsg & "                     <t:Mailbox>"
    SOAPMsg = SOAPMsg & "                         <t:EmailAddress>recipient@XXXXX.com</t:EmailAddress>"
    SOAPMsg = SOAPMsg & "                     </t:Mailbox>"
    SOAPMsg = SOAPMsg & "                 </t:ToRecipients>"
    SOAPMsg = SOAPMsg & "             </t:Message>"
    SOAPMsg = SOAPMsg & "         </Items>"
    SOAPMsg = SOAPMsg & "     </CreateItem>"
    SOAPMsg = SOAPMsg & "   </soap:Body>"
    SOAPMsg = SOAPMsg & " </soap:Envelope>"

    CreateMessageSOAP = SOAPMsg
End Function
...