有谁知道有没有办法使Exchange Server 2010中执行一些程序在邮件接收一些邮箱?
例如:
我有邮件test1@example.com和test2@example.com
我想,当邮件到达test1@example.com和邮件到达时至test2@example.com执行program2.exe执行program1.exe
我特地在Exchange管理控制台中的所有选项,并没有发现类似的事情。
有谁知道有没有办法使Exchange Server 2010中执行一些程序在邮件接收一些邮箱?
例如:
我有邮件test1@example.com和test2@example.com
我想,当邮件到达test1@example.com和邮件到达时至test2@example.com执行program2.exe执行program1.exe
我特地在Exchange管理控制台中的所有选项,并没有发现类似的事情。
我使用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个脚本一个每个帐户需要监控。
在这里看到原来的例子- > 来源
交易所拥有外的箱子没有办法做到这一点。 你可能想看看使用Exchange Web服务(EWS)订阅在外部服务做到这一点。
我做到了这一点的方法之一是通过使用Outlook的COM对象进行扫描特定标准的收件箱,并执行基于其发现的过程写一个PowerShell脚本。