有誰知道有沒有辦法讓郵件接收某些郵箱的Exchange Server 2010執行某些程序?Exchange 2010 - 郵件接收運行命令
例如:
我有郵件[email protected]和[email protected]
我想,當郵件到達[email protected] 和執行程序2執行program1.exe。 exe郵件到達[email protected]
我已經看過Exchange管理控制檯中的所有選項,並沒有發現任何類似的東西。
有誰知道有沒有辦法讓郵件接收某些郵箱的Exchange Server 2010執行某些程序?Exchange 2010 - 郵件接收運行命令
例如:
我有郵件[email protected]和[email protected]
我想,當郵件到達[email protected] 和執行程序2執行program1.exe。 exe郵件到達[email protected]
我已經看過Exchange管理控制檯中的所有選項,並沒有發現任何類似的東西。
Exchange沒有開箱即用的方式來執行此操作。您可能想要在外部服務中使用Exchange Web服務(EWS)訂閱來執行此操作。
我完成此操作的一種方法是,使用outlook com對象編寫powershell腳本來掃描收件箱中的某些條件,並根據發現的內容執行一個過程。
我用EWS和PowerShell做了類似的事情。您可以下載EWS here
然後您可以創建在PowerShell中的腳本,使用Exchange Web服務
這是我的腳本的例子:
$MailboxName = "[email protected]"
$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
我看着EWS和類似的東西可以通過它來完成。但我需要的是交換啓動過程... 與EWS有另一方需要「ping」交換服務器,並檢查werther新郵件.. 我需要交換觸發新郵件到達時的行動。 。如果不是通過執行外部程序,則至少通過調用特定的URL 例如當郵件到達[email protected]時調用http://somesrver.com/script.php?id=1 和test2 @ example .com致電http://someserver.com/script.php?id=2 謝謝, Marko – Marko3d 2012-04-10 18:26:46
您唯一可以運行代碼的地方是使用傳輸代理。每條消息都通過傳輸管道,因此,您可以編寫一個觸發此事件的代理。我會讓代理通過LPC/WCF在盒子上ping一個服務,而不是通過in-proc來限制你對傳輸服務本身的影響。 – 2012-04-11 23:22:54