2012-04-10 3 views
1

누군가가 Exchange 서버 2010 일부 메일에 대한 메일을받을 때 일부 프로그램을 실행하게하는 방법은 알고 있습니까? 예를 들어Exchange 2010 - 메일 실행 명령을 수신

:

나는이 메일 [email protected][email protected]

내가 메일 을 [email protected]하고이 program2을 실행하기 위해 도착했을 때 program1.exe을 실행하려는

. exe 메일이 도착했을 때 [email protected]

Exchange 관리 콘솔에서 모든 옵션을 살펴본 결과 비슷한 것을 찾지 못했습니다.

답변

0

Exchange에는이 작업을 수행하는 즉시 사용할 수있는 방법이 없습니다. 이렇게하려면 외부 서비스에서 EWS (Exchange Web Services) 구독을 사용하는 것이 좋습니다.

+0

나는 그것을 통해 수행 할 수있는 EWS와 비슷한 보았다. 하지만 내가 필요한 건 그 과정을 시작하기위한 교환 일 뿐이야 ... EWS와 함께 "핑"교환 서버가 있어야하고 새 메일이 있는지 확인해야하는 다른 쪽이있다 .. 새 메일 도착시 조치를 실행하려면 교환이 필요하다. . 만약 외부 프로그램을 실행하지 않았다면 최소한 특정 URL을 호출하여 등의 메일이 도착하면 [email protected]이 http://somesrver.com/script.php?id=1 을 호출하고 test2 @ example을 호출합니다. .com을 호출하려면 http://someserver.com/script.php?id=2 감사합니다. Marko – Marko3d

+0

코드를 처리 할 수있는 유일한 곳은 전송 에이전트입니다. 모든 단일 메시지는 전송 파이프 라인을 통과하기 때문에이를 트리거하는 에이전트를 작성할 수 있습니다. 에이전트가 LPC/WCF를 통해 상자에 서비스를 ping하는 대신 전송 서비스 자체에 미치는 영향을 제한하는 in-proc 작업을 수행합니다. –

0

필자가 한 가지 방법은 outlook com 개체를 사용하여 powershell 스크립트를 작성하여받은 편지함에서 특정 조건을 검색하고 발견 한 내용을 기반으로 프로세스를 실행하는 것입니다.

3

나는 EWS와 powershell을 사용하여 비슷한 것을 만들었습니다. 당신은 EWS가 here

그럼 당신이 내 스크립트의 예이다는 Exchange 웹 서비스

를 사용하는 파워 쉘의 스크립트를 생성 할 수 있습니다 다운로드 할 수 있습니다 : 다음

$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