Outgoing mail control

We have en exchange2003 and will migrate lather on 2010;
We have many version of Outlook on the domain ( 2003, 2007 & 2010 );

Some people for different reason can make errors when they are sending or answering emails to externals people (other domain name address ).

I would like to find a solution to implement an "outgoing mail control" on all emails to be sure that our users will realize that one email is going to a people "outside" of our company.

The result could be that a specific "color" or " flag" or many other indication to make that kind of emails "SPECIFIC" to advise quickly the user that he is "sending" an email to an other company user... (??)
rmaillouxSystem AdministratorAsked:
Who is Participating?
yo_beeConnect With a Mentor Director of Information TechnologyCommented:
Here is something that might work.
You will need to do a couple of things to get this to work properly.
First you need to lower your security level to allow for macros to run.
Tools > Macros > Security > No Security.
Once that is done you can then you need to create a Private Sub routine under ThisOutlookSession
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

Dim Recipients As Outlook.Recipients
  Dim recip As Outlook.Recipient
  Dim i
  Dim prompt As String
  Dim strSMTP As String
  Dim k As Integer
  Const PR_SMTP_ADDRESS As String = _

On Error Resume Next
 ' use lower case for the address
 ' LCase converts all addresses in the To field to lower case
 Set Recipients = Item.Recipients
  For i = Recipients.Count To 1 Step -1
    Set recip = Recipients.Item(i)
    Set pa = recip.PropertyAccessor
    strSMTP = pa.GetProperty(PR_SMTP_ADDRESS)
         Debug.Print (strSMTP)
      'Change the domian name to match your domain.
         'ie if you are contoso.com just enter @contoso
 If InStr(LCase(pa.GetProperty(PR_SMTP_ADDRESS)), "@enter your domain") = 0 Then

k = k + 1
  End If
Next i

If k > 0 Then
      prompt$ = "You are sending this to one or more external address." & vbNewLine & "Are you sure you want to send it?"
       If MsgBox(prompt$, 52, "Check Address") = vbNo Then

         Cancel = True
       End If
End If

End Sub

Open in new window

Once tested and ready next you will need to deploy this to users.
Locate the vbaProject.OTM  in %appdata%\Microsoft\Outlook\ on the test compute and
(W7: C:\users\%username%\Appdata\roaming\microsoft\outlook
XP: c:\Document and Settings\Appclication data\Microsoft\outlook)
copy the file to a network share for distribution.
Then you will need to push this out to all your users via a script or  used GPP (Group Policy Preferences) to achieve this step.  If you have W7 and you have RSAT installed the machine I would use GPP.
You will also need to make a setting change to a GPO > User Configuration  >Administrative Templates> Office > Microsoft Office Outlook 2007/Security/Trust Center > Security setting for macros > Security Level > No security check.  This will lower the Macro security and will allow this to run on the users computer without you having to walk around and do it manually.
If you do not have one or any of the Admin Templates here are the links to them.
Office 2003 ADM
Office 2007 ADMX
Office 2010 ADMX
Just a reminder this will fire every time a user sends a e-mail with an external address in it
With exchange 2010 and outlook 2010 you can enable mail tips


or third party solution like this


With Exchange 2010 you can configure IRM to prevent confidential information leaks.

rmaillouxSystem AdministratorAuthor Commented:
But we are on Exchange 2003...(?)
Easily manage email signatures in Office 365

Managing email signatures in Office 365 can be a challenging task if you don't have the right tool. CodeTwo Email Signatures for Office 365 will help you implement a unified email signature look, no matter what email client is used by users. Test it for free!

If you are not can't wait till exchange upgrade I would suggest using third party tool mentioned in my previous reply.
rmaillouxSystem AdministratorAuthor Commented:
No more suggestion ??
yo_beeDirector of Information TechnologyCommented:
It sounds like you are looking to catch the email before it is processed to your exchange server.   Is that correct?
rmaillouxSystem AdministratorAuthor Commented:
Exactly because we dont want that the user can make a mistake on sending to an external email address
rmaillouxSystem AdministratorAuthor Commented:
I've requested that this question be deleted for the following reason:

No good answer
rmaillouxSystem AdministratorAuthor Commented:
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.