Fire a script when a mailbox receives a message.

I'm having problems with a service running on my Exchange Server.  I'd like to be able to have a batch file run when an email is received in a specific mailbox.  When using the Rules Wizard in Outlook it appears as though I could run a script, but it would only work if I had a machine running, Outlook open.  I need something that will run server side.  I've heard about "Event Scripting" but can't seem to find any good write ups with examples.  Can anyone point me in the right direction?
Who is Participating?
Stacy SpearPresident/Principal ConsultantCommented:
Perhaps something along the lines of the following:


Sub IEventIsCacheable_IsCacheable()
      'To implement the interface, and return S_OK implicitly
End Sub

Sub ISMTPOnArrival_OnArrival(ByVal Msg, EventStatus)
      Dim envFlds
      Dim colAttachs
      Dim iFound
      Set envFlds = Msg.EnvelopeFields

      If Msg.To = "" and Msg.Subject = "specialsubject" Then
            'perform batch file stuff here (VBS only I think)
            'or maybe call filename.batch
            'do nothing
      End If

End Sub

Stacy SpearPresident/Principal ConsultantCommented:
Event Sinks -

Are the way to go. Can be a variety of languages and can be used for all sorts of things.
Stacy SpearPresident/Principal ConsultantCommented:
I believe somewhere on MSDN (if not in the download) there is an example with code of exactly what you want to do. Off today, so my workstation with the download on it is not available.
Has Powershell sent you back into the Stone Age?

If managing Active Directory using Windows Powershell® is making you feel like you stepped back in time, you are not alone.  For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why.

nummagumma2Author Commented:
darkstar - thanks for posting.  I've read the doc you sent and see that the method is what I want - unfortunately there's no sample code in the download (or anywhere else on MSDN that I can find) that I can tweak to do what I want.  I'm still looking for a good example of a sink that would permit some kind of batch file to be executed...
Stacy SpearPresident/Principal ConsultantCommented:
Code example - outgoing (easily modifiable to incoming) 

On arrival code example -
Stacy SpearPresident/Principal ConsultantCommented:
Posted too quick. I thought it was on MSDN, but it seems as if all is on Here is a good bit here.

Glenn's example of using MS sinks (his stuff is great, plus he help write the app)
nummagumma2Author Commented:
Thanks darkstar.  I found those.  I've used the one for outgoing disclaimer message in the past.  Unfortunately, not being a programmer, I'm not savvy enough to tweak either of them to fire when mail is received on only 1 email address, nor am I clear where to tweak to make it so that the code would call my existing batch file... (or how to incorporate my batch into the sink).

The logic is simple enough to me, just not how to code it.

if message arrives on then fire batch file.

I suppose it would be best if the message had a specific word or phrase in the subject to limit the small possibility of abuse by a spammer...
nummagumma2Author Commented:
Untested, but I'll assume it works.... no time to test and want to award points for effort.

Thanks darkstar.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.