A while ago there was a discussion about blocking top level domains for which there was no entry in Outlook's top-level domain list. As I recall it was done using binary within a registry entry and the actual registry entry was dependent upon which version of Outlook one was using.I'm seeing a lot of spam coming from a variety of trade domains. Which is to say that sometimes the spam is from @stateliquid.trade and sometimes from other.trade domains. Is there a way to devise a registry entry that would handle every domain that ended in ".trade" regardless of what followed the "@" symbol? Can I end it the registry to block, like we can do with top-level country domain?
The registry edit you are thinking of adds UK and EU to the Junk Mail filter's Blocked Top-Level Domain list. It won't work for the new TLDs as it only supports two letters.
Outlook does not support wildcard filters, so you won't be able to use a rule for @*.trade. However, you do two options.
You can use rules that look for words in the sender's address. Create a rule and use .trade as the word in the address. The leading dot will prevent it from matching the word trade in aliases or domain names so it won't trap bob@tradesman.com or trade@mydomain.com, but it might get some messages that a dot in the alias or use a subdomain for the mail server, as in bob.trade@mydomain.com or bob@ny.tradesman.com
Another option is adding .trade to the block senders list. Open Junk Email Options, Blocked Sender tab and add .trade to the list.
To avoid lost messages, peruse the Junk Email folder now and again and add valid addresses to the safe list or if using rules, as an exception.
If the solutions above don't work for you, you can use an ItemAdd macro or a run a script rule to look for the TLD.
ItemAdd Macro to Filter TLDs
This macro is added to ThisOutlookSession and checks the top-level domains (the letters after the last dot) for any in the Select Case statement. If a TLD matches, it moves the message to the junk folder. If you'd rather delete the messages, use Item.Delete instead.
Option Explicit Dim JunkFolder As Outlook.Folder Private WithEvents olInboxItems As Items Private Sub Application_Startup() Dim objNS As NameSpace Set objNS = Application.Session ' instantiate objects declared WithEvents Set olInboxItems = objNS.GetDefaultFolder(olFolderInbox).Items Set JunkFolder = objNS.GetDefaultFolder(olFolderJunk) Set objNS = Nothing End Sub Private Sub olInboxItems_ItemAdd(ByVal Item As Object) On Error Resume Next Dim strSender As String Dim lLen strSender = LCase(Item.SenderEmailAddress) lLen = Len(strSender) - InStrRev(strSender, ".") + 1 Debug.Print strSender, lLen, Right(strSender, lLen) Select Case Right(strSender, lLen) ' add more TLDs as needed Case ".trade", ".info", ".tips" Item.Move JunkFolder ' Item.Delete End Select End Sub
Run a Script Rule Macro
This macro should be pasted into a new Module. After adding it to the VBA Editor and saving, create a new rule with the Run a Script action then select this script. The advantage of using this in a rule instead of the rule above is that this checks for the TLD. It will skip messages from bob@ny.tradesmen.com.
Sub DeleteSpam(Item As Outlook.MailItem) Dim strSender As String Dim lLen Dim objNS As NameSpace Dim JunkFolder As Outlook.Folder Set objNS = Application.Session Set JunkFolder = objNS.GetDefaultFolder(olFolderJunk) strSender = LCase(Item.SenderEmailAddress) lLen = Len(strSender) - InStrRev(strSender, ".") + 1 Debug.Print strSender, lLen, Right(strSender, lLen) Select Case Right(strSender, lLen) Case ".trade", ".info", ".tips" Item.Move JunkFolder ' Item.Delete End Select End Sub
How to use the Macro
First: You will need macro security set to low during testing.
To check your macro security in Outlook 2010 or 2013, go to File, Options, Trust Center and open Trust Center Settings, and change the Macro Settings. In Outlook 2007 and older, itâs at Tools, Macro Security. If Outlook tells you it needs to be restarted, close and reopen Outlook. Note: after you test the macro and see that it works, you can either leave macro security set to low or sign the macro.
Now open the VBA Editor by pressing Alt+F11 on your keyboard.
To use the macro code in ThisOutlookSession:
- Expand Project1 and double click on ThisOutlookSession.
- Copy then paste the macro into ThisOutlookSession.
Application_Startup macros run when Outlook starts. If you are using an Application_Startup macro you can test the macro without restarting Outlook by clicking in the first line of the Application_Startup macro then clicking the Run button on the toolbar or pressing F8.
More information as well as screenshots are at How to use the VBA Editor.
More Information
For more information about the registry edit, see Add EU to the International Blocked TLD List (not needed with Outlook
2016.)
Thank you, Diane. I've been drowning in spam from .guru, and didn't realize I could simply ban .guru (with no wildcard) to solve the problem. Elegant. Successful. Apppreciated.
Hello, Can I read "Safe Senders" and "Blocked senders" contents via Outlook VBA ?
My outlook is 2016. using O365 exchange.
Hello,
I am getting swamped with junk that ends in .icu.
Any way to block this? FYI I am a 'grasshopper' when it comes to making changes to Outlook and I'm not sure what version I have
You'll need to make a rule that looks for ".icu" in the sender's address. If you have sender's who have that string in their address (ex: alias@mail.icuni.com) , you'll need to use a script that checks just for the last characters in the address.
Diane, if we are ever in the same city, I owe you a dinner at the best restaurant in town. Your tips have saved me time and again. But this one isn't working.
I have ".website" (no quotation marks) in my blocked senders list, but I just got an email from name@domain.website. Does this not work for certain versions of Outlook? I use hosted exchange (not sure what version they are on, but it is relatively recent) and locally I have an Office 365 subscription, so I should have the latest and greatest Outlook installed. Using Windows 10.
Thoughts?
H1,
Trying to block junk mail by adding .trade to the block senders list doesn´t work for me. I get the following message by doing this: "Error: The address ca´nt be added on the list because it includes an incorrect domain or isn´t formatted correctly"...
It might be dependent on your version. What version of Outlook do you use? (I checked it in both 2013 & 2016 with exchange/outlook.com and pop accounts.)