有没有人知道有没有办法让Exchange Server 2010在收到某些邮箱的邮件时执行某些程序?
例如:
我有邮件test1@example.com和test2@example.com
我想在邮件到达test1@example.com时执行program1.exe 并在邮件到达test2@example.com时执行program2.exe
我查看了Exchange管理控制台中的所有选项,但没有找到类似的内容。
答案 0 :(得分:3)
我使用EWS和powershell做了类似的事情。您可以下载EWS here
然后,您可以在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()
然后,为您需要监控的每个帐户运行一个脚本。
请参阅此处的原始示例 - > Source
答案 1 :(得分:0)
Exchange没有开箱即用的方法来做到这一点。您可能希望在外部服务中使用Exchange Web服务(EWS)订阅来执行此操作。
答案 2 :(得分:0)
我实现这一目标的一种方法是使用outlook com对象编写一个powershell脚本来扫描收件箱中的某些条件,并根据它找到的内容执行一个过程。