Exchange 2010中 - 在收到邮寄的运行命令(Exchange 2010 - run co

2019-10-16 14:34发布

有谁知道有没有办法使Exchange Server 2010中执行一些程序在邮件接收一些邮箱?

例如:

我有邮件test1@example.com和test2@example.com

我想,当邮件到达test1@example.com和邮件到达时至test2@example.com执行program2.exe执行program1.exe

我特地在Exchange管理控制台中的所有选项,并没有发现类似的事情。

Answer 1:

我使用EWS和PowerShell做类似的东西。 您可以下载EWS 这里

然后,您可以创建在PowerShell中的脚本,使用Exchange Web服务

这是我的脚本的例子:

$MailboxName = "mail@domain.com"
$dllpath = "C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll"
[void][Reflection.Assembly]::LoadFile($dllpath)
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP1)
$service.TraceEnabled = $false

$service.Credentials = New-Object System.Net.NetworkCredential("name","password", "domain")
$service.Url="https://mail.yourdomain.com.au/ews/exchange.asmx"

try{
$fldArray = new-object Microsoft.Exchange.WebServices.Data.FolderId[] 1
$Inboxid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$MailboxName)
$fldArray[0] = $Inboxid
$stmsubscription = $service.SubscribeToStreamingNotifications($fldArray, [Microsoft.Exchange.WebServices.Data.EventType]::NewMail)
$stmConnection = new-object Microsoft.Exchange.WebServices.Data.StreamingSubscriptionConnection($service, 30);
$stmConnection.AddSubscription($stmsubscription)
Register-ObjectEvent -inputObject $stmConnection -eventName "OnNotificationEvent" -Action {

    foreach($notEvent in $event.SourceEventArgs.Events){    
        [String]$itmId = $notEvent.ItemId.UniqueId.ToString()
        $message = [Microsoft.Exchange.WebServices.Data.EmailMessage]::Bind($event.MessageData,$itmId)
        IF ($message.Subject -eq "execprocess"){
            Start-Process  "mybat.bat" 
        }            
    }    


} -MessageData $service

}catch [Exception] {
                Get-Date  | Out-File C:\logs\logError.txt -Append
                "Error : "+  $_.Exception.Message  
                }
Register-ObjectEvent -inputObject $stmConnection -eventName "OnDisconnect" -Action {$event.MessageData.Open()} -MessageData $stmConnection
$stmConnection.Open()

然后,运行2个脚本一个每个帐户需要监控。

在这里看到原来的例子- > 来源



Answer 2:

交易所拥有外的箱子没有办法做到这一点。 你可能想看看使用Exchange Web服务(EWS)订阅在外部服务做到这一点。



Answer 3:

我做到了这一点的方法之一是通过使用Outlook的COM对象进行扫描特定标准的收件箱,并执行基于其发现的过程写一个PowerShell脚本。



文章来源: Exchange 2010 - run command on mail receive