Take the 2-minute tour ×

Lately people at work have been sending with mailing lists in blind copies instead of just sending to the mailing lists. I think the intent is to prevent people from accidentally replying to all, but it means that these emails aren't sorted into their proper folders when they arrive.

I'd like to at least be able to sort them into a common folder, but these emails arrive with no "To:" line in the headers. I'm using Outlook 2007, and I can't figure out a way to use their built-in rule editor to create a rule that sorts these emails.

Is there a plugin that will allow me to sort emails like this, or a better rule editor?

Updated: I know this is very old, but this is still very annoying to me. Is there any way to sort these kinds of emails to their own folder?

Updated again: Just so people are clear, I think the logic for the rule I would need would be something like ... "To and CC both contain neither me nor any mailing lists that include me."

share|improve this question
I wonder if this would also pick up spam or if your Rule would be overruled by the spam filter... –  Ivo Flipse Apr 14 '10 at 6:35

4 Answers 4

up vote 4 down vote accepted

It would seem you could select the following conditions to succeed at this in Steps 1 to 3 of the Rules Wizard:

  1. Check "Where my name is not in the To box"
  2. Check "move it to the specified folder" and select the folder
  3. Check "except if my name is in the To or Cc box"

I tested it using my work email, emailing myself from Google and it seems to do what you're looking for if I read your question correctly.

share|improve this answer
I think he's trying to tell which e-mail list it was sent to. –  Chris S May 24 '10 at 19:22
Alright. I'll delete my comment if it ends up being unhelpful. –  Jessie May 24 '10 at 19:32
This might work, but I'd have to put it lower priority than all other rules. My name might not be in the To box but it could still be sent to me through a list. –  user29589 May 24 '10 at 20:58

If you have an Exchange server, and this is all internal, then no, it's not possible to tell who the e-mail was sent to.

If it was sent from an external e-mail server, or almost any e-mail server except Exchange: In the headers, the original received line should have for; which Outlook rules can search for (client side only). Just setup a condition "with specific words in the message header" for the mailing list's e-mail address.

Exchange does not add the standard e-mail headers unless it's leaving Exchange, which is non-compliant with the RFC, but again, it's Microsoft.

share|improve this answer
It is exchange, unfortunately. While getting the original mailing list would be amazing I don't expect that this information is still around. I'd like to sort them into a common folder, though. –  user29589 May 24 '10 at 21:05
See jessie's answer for how to sort everything where the To: field is empty. –  Chris S May 25 '10 at 1:26

i suggest you cam make a rule that move all emails that u are in TO or CC to a folder and this folder become the main for you and all other mails become in another folders

share|improve this answer

So you are looking for a "Where my name is not in the To, or Cc fields" rule, but it's the one rule they don't have in the wizard. I hope I have that right.

I don't know of any such addins, however it is possible to roll your own. This MSDN article shows how to access Outlook 2007 and build an addin.

Or you could do this in VBA macros, actually... here this one I wrote will do what you want, just configure the constants to your liking. In Outlook open the macro editor (Alt+F11), and paste this into the ThisOutlookSession module. Unless you added macros there before, it should be empty.

You will need to enable macros, if not already, via the menu Tools -> Macros -> Security. If set on 'Warnings for all macros' then you will be prompted each time you open Outlook, which is fine. Re-open Outlook after saving the macro.

'# [Outlook VBA custom mail mover by keyboardMonkey]
'# Checks new email if YOUR_NAME does not appear in the TO or CC list.
'# moves the message to DESTINATION_FOLDER.
'# Note: DESTINATION_FOLDER must be a child of the Inbox node, not a sibling.

Const YOUR_NAME As String = "Wesley"
Const DESTINATION_FOLDER As String = "testfolder"

'// hook into the outlook items events
Public WithEvents myOlItems As Outlook.Items

Public Sub Application_Startup()

    ' get the inbox item collection
    Set myOlItems = Outlook.Session.GetDefaultFolder(olFolderInbox).Items

End Sub

'// called on mail item add
Private Sub myOlItems_ItemAdd(ByVal Item As Object)

    If TypeName(Item) = "MailItem" Then

        ' get strongly typed object
        Dim mymail As MailItem
        Set mymail = Item

        ' flags if our name appears in each of the fields
        Dim name_in_to As Boolean
        Dim name_in_cc As Boolean
        name_in_to = InStrB(1, mymail.To, YOUR_NAME) > 0
        name_in_cc = InStrB(1, mymail.CC, YOUR_NAME) > 0

        '#Uncomment below to show mail item details
        ' MsgBox (mymail.Subject + " has me in TO: " + Str(name_in_to) + " and CC: " + Str(name_in_cc))

        ' are we mentioned in the header?
        If (Not name_in_to And Not name_in_cc) Then

            ' start with each main mapi folder
            Dim idx As Integer
            For idx = 1 To Outlook.Session.Folders.Count - 1

                ' recurse into subfolders
                Dim dest As Outlook.MAPIFolder
                Set dest = GetFolder(Outlook.Session.Folders.Item(idx), DESTINATION_FOLDER)

                ' we found our destination!
                If Not (dest Is Nothing) Then
                    mymail.Move dest
                    Exit For
                End If


        End If

        ' house cleaning
        Set mymail = Nothing

    End If

End Sub

'// to iterate is human. to recurse, divine
Private Function GetFolder(parent As Folder, name As String) As Outlook.MAPIFolder
    Dim idx As Integer
    Dim res As Object
    For idx = 1 To parent.Folders.Count
        Set res = GetFolder(parent.Folders.Item(idx), name)
        If Not res Is Nothing Then
            Set GetFolder = res
            Exit For
        End If
    If (parent.name = name) Then
        Set GetFolder = parent
    End If
End Function
share|improve this answer

Your Answer


