1

有谁知道有没有办法让 Exchange server 2010 在收到某些邮箱的邮件时执行某些程序?

例如:

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

我想在邮件到达 test1@example.com 时执行 program1.exe 并在邮件到达 test2@example.com 时执行 program2.exe

我查看了 Exchange 管理控制台中的所有选项,但没有找到类似的东西。

4

3 回答 3

3

我使用 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 个脚本。

请参阅此处的原始示例--> Source

于 2013-11-01T04:51:24.343 回答
0

Exchange 没有开箱即用的方法来执行此操作。您可能希望查看在外部服务中使用 Exchange Web 服务 (EWS) 订阅来执行此操作。

于 2012-04-10T18:23:03.567 回答
0

我完成此操作的一种方法是使用 Outlook com 对象编写一个 powershell 脚本来扫描收件箱中的某些条件,并根据它找到的内容执行一个进程。

于 2012-04-11T13:56:14.637 回答