Wanting to run a script that will filter any body that has a russian link in it.

Status
Not open for further replies.

Bruce Johnson

Member
Outlook version
Outlook 2010 32 bit
Email Account
POP3
I am getting tons of spam that has russion links in them and I want to create a script that will flag these and move them to a folder (either to be reviewed ar to delete, not sure yet, want to test its function first)
I am thinks in some pseudo code that trips after other rules run, then then something like the following

function testifruslink()
'looking for "http://xxxxxxxx.ru"
if body contains "http://" then
if body contains ".ru" then
if testforrussianlink then
move to folder xyx
endif
endif
endif
end function

But I am not sure if this would be the most efficient way or how to test for wild cards in a string

Thanks!
Bruce
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
should be able to use a standard rule - words in body ".ru"

if you want to use a script in a rule, you'll do it more or less like this

Code:
Public Sub Checkdomain(Item As MailItem)
  
if instr(1,Item.HTMLBody, ".ru") >0 then 
'move to folder
end if
End Sub
This macro shows how to move - Use VBA to move messages with attachments (along with how to set up the rule or use an itemadd macro instead).
 

Bruce Johnson

Member
Outlook version
Outlook 2010 32 bit
Email Account
POP3
I tried with a rule, but there were too many false positives.. Let me try it again.
Thanks! If not, I will try the macro (which I presume will be much slower...) I did not know about the item.htmlbody which I why I came here to the experts! I may want to do one other test, as when I was searching for .ru, I would get what would be valid searches, but false for what I was looking for, and that would be if right(string,3) = ".ru" (as an example, yours would flag tim.russel.com I would think, but that is easy stuff!)

I may actually set up a rule for .ru, to run the macro. Then instead of testing every message, it would only test the ones outlook thinks meet the rule, and then I can further test it in VBA. That may be the best of both worlds!


Thanks!
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
I may actually set up a rule for .ru, to run the macro. Then instead of testing every message, it would only test the ones outlook thinks meet the rule, and then I can further test it in VBA. That may be the best of both worlds!
Yeah, that would be a good option.

I'm not sure right(string,3) = ".ru" would work - it would only find domain.ru, not domain.ru/page. But... there are regex that could check for the domain - or use mid to find .ru" or .ru/
 

Bruce Johnson

Member
Outlook version
Outlook 2010 32 bit
Email Account
POP3
This seems to be the ticket for testing for the link:
If Mid(Item.HTMLBody, InStr(1, Item.HTMLBody, ".ru"), 5) = ".ru" & Chr(34) & ">" Then

I was starting say say:
I based it off of the instr you provide to find the .ru.
Now, I am having an issue (this is where my ignorance to OUTLOOK VBA come into play... I work quite well in VBA with Excel...) I have a PST that is named "My Spam" (D:\My Email\My Spam.pst) and then on the primary level I have a folder called .ru in in this folder, I have a folder called Test.RU which is where I want to move the emails to.

But I figured it out and here is the finished (beta) code:

<code>
Public Sub Checkdomain(Item As MailItem)
'MsgBox ("Trap")
If InStr(1, Item.HTMLBody, ".ru") > 0 Then
'MsgBox (Mid(Item.HTMLBody, InStr(1, Item.HTMLBody, ".ru"), 5))
'test for .ru"> (meaning the end of the html with ".ru" Will add a second test for ".ru/" meaning
'that there may be a page off of the home .ru page. e.g. http://www.russianspamsite.ru/index.
'We need these two tests to eliminate false positives for something like Rubicon | Curriculum Solutions for Personalized Learning & Student Achievement or
'tim.russel@email.com

If Mid(Item.HTMLBody, InStr(1, Item.HTMLBody, ".ru"), 5) = ".ru" & Chr(34) & ">" Then
'MsgBox (Mid(Item.HTMLBody, InStr(1, Item.HTMLBody, ".ru"), 5))
'move to folder - \\My Spam\.ru\Test.RU
On Error Resume Next
'=--- Test
Dim myOlApp As New Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.MAPIFolder
Dim myDestFolder As Outlook.MAPIFolder
Dim myItems As Outlook.Items
Dim myItem As Object
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myItems = myInbox.Items
Set myDestFolder = Outlook.Session.Folders("My Spam").Folders(".ru").Folders("Test.RU")
Item.Move myDestFolder
End If​

End If​
End Sub

</code>

If anybody can use any part of this, please do!
If you seen any chance for enhancement, let me know!

Thanks for getting me started and pointing me in the right direction!

Cheers,
Bruce
 

Bruce Johnson

Member
Outlook version
Outlook 2010 32 bit
Email Account
POP3
the web site I listed above was just a random www.ruxxxxx.com that I thought of. I was NOT expecting it to get a link to a specific page and it getting expanded...
 
Status
Not open for further replies.
Top