Page 1 of 1
Script Conditionally Save Attachement
Posted: 2020-05-28 23:27
by jtellier
Has anyone done a script that will save attchements to a location for messages sent to someone and from someone?
Like
if (from=="
test@test.com" && to=="
to@test.com") SaveFiles("C:\Here")
Sorry I am a NEWB in VBScript and just wanted to see if anyone else has done this.
Thanks!
Jeremy
Re: Script Conditionally Save Attachement
Posted: 2020-05-29 04:37
by palinka
Sure.
Rule:
Use AND
Criteria: from contains
from@address.com
Criteria: to contains
to@address.com
Action: Run Function SaveAttachment
Code: Select all
Sub SaveAttachment(oMessage)
Dim i, strDir, strFile
strDir = "C:\path\to\attachment_folder\"
For i = 0 To oMessage.Attachments.Count-1
strFile = oMessage.Attachments.item(i).Filename
oMessage.Attachments.item(i).SaveAs(strDir & strFile)
Next
End Sub
I use it for a note taking service called RocketBook. Something my wife got me. Each category of note has a unique email address using plus addressing (
me+category1@mydomain.tld) and the rule only has to pick up the TO address to match. Each category has a separate folder. Works great except my 6 year old used to write in my notebook with pens that don't erase.
If you want multiple folders, you need multiple subs and multiple rules.
Re: Script Conditionally Save Attachement
Posted: 2020-05-29 16:58
by jtellier
Awesome thanks... now I am going to show you how green I am on this..... Where do I put the Rule, is it in the normal vbs file in the program directory?
Re: Script Conditionally Save Attachement
Posted: 2020-05-29 17:02
by jtellier
Oh I see it in the mailbox, perfect thanks!
Re: Script Conditionally Save Attachement
Posted: 2020-05-29 21:18
by jtellier
So I spoke too soon, I put it in the vbs, reloaded and setup the rules and tested but the files never moved over. Is there anywhere specific you need to put the rules or is there an error log somewhere?
Thanks,
Jeremy
Re: Script Conditionally Save Attachement
Posted: 2020-05-30 03:58
by mattg
add the vbs provided to your eventhandlers.vbs (must be this file, in it's existing location)
In the admin GUI enable scripts
Re: Script Conditionally Save Attachement
Posted: 2020-12-01 01:30
by buskeyl
Hoping I can get a few pointers here. Just trying to facilitate attachments that get sent into Hmail get saved off to a local folder.
I edited C:\Program Files (x86)\hMailServer\Events\EventHandlers.vbs to add the following to the bottom of the file (It was not clear if it needed to be anyplace specific..
Sub SaveAttachment(oMessage)
Dim i, strDir, strFile
strDir = "D:\Attachments\"
For i = 0 To oMessage.Attachments.Count-1
strFile = oMessage.Attachments.item(i).Filename
oMessage.Attachments.item(i).SaveAs(strDir & strFile)
Next
End Sub
I created "D:\Attachments\"
I enabled Scripts in advanced settings and clicked reload scripts.
I created a rule called Save Attachments, it's action is to "Run a Function" and it's specified script function is "SaveAttachment" Did this as both a main rule, and a rule on the actual account I was sending the test attachment into.
I get no ERROR logs in the log directory, and in the normal operational log, I do see entries in the log file, "Applying rule Save Attachments", however, nothing shows up in d:\attachments
Did I miss something?
Re: Script Conditionally Save Attachement
Posted: 2020-12-01 02:25
by palinka
buskeyl wrote: ↑2020-12-01 01:30
Hoping I can get a few pointers here. Just trying to facilitate attachments that get sent into Hmail get saved off to a local folder.
I edited C:\Program Files (x86)\hMailServer\Events\EventHandlers.vbs to add the following to the bottom of the file (It was not clear if it needed to be anyplace specific..
Sub SaveAttachment(oMessage)
Dim i, strDir, strFile
strDir = "D:\Attachments\"
For i = 0 To oMessage.Attachments.Count-1
strFile = oMessage.Attachments.item(i).Filename
oMessage.Attachments.item(i).SaveAs(strDir & strFile)
Next
End Sub
I created "D:\Attachments\"
I enabled Scripts in advanced settings and clicked reload scripts.
I created a rule called Save Attachments, it's action is to "Run a Function" and it's specified script function is "SaveAttachment" Did this as both a main rule, and a rule on the actual account I was sending the test attachment into.
I get no ERROR logs in the log directory, and in the normal operational log, I do see entries in the log file, "Applying rule Save Attachments", however, nothing shows up in d:\attachments
Did I miss something?
Did you use "contains"?
Criteria: from contains
from@address.com
Criteria: to contains
to@address.com
Did you use some other criteria?
Re: Script Conditionally Save Attachement
Posted: 2020-12-01 02:54
by buskeyl
Sorry, didn’t mention the criteria did I? In both cases, the rule criteria was: To: field equals <the email address I was sending my tests into>
Left the TEST field value blank, as I have no idea what’s that’s there for :p.
Would that not work?
Re: Script Conditionally Save Attachement
Posted: 2020-12-01 02:56
by buskeyl
Ha! Changed it to “contains” from “equals” and it worked. Sweet. Would like to understand why that was necessary?
Re: Script Conditionally Save Attachement
Posted: 2020-12-01 03:14
by buskeyl
Also, is there a way for me to invoke a specific PowerShell script? Can I set up a function like the one we did above that will run a PowerShell script wit a message of particular criteria is received? I am fairly proficient with PowerShell, much less so with VBS. I admit I did not search for it yet, it just occurred to me to ask while I had some attention.
Re: Script Conditionally Save Attachement
Posted: 2020-12-01 03:45
by palinka
buskeyl wrote: ↑2020-12-01 03:14
Also, is there a way for me to invoke a specific PowerShell script? Can I set up a function like the one we did above that will run a PowerShell script wit a message of particular criteria is received? I am fairly proficient with PowerShell, much less so with VBS. I admit I did not search for it yet, it just occurred to me to ask while I had some attention.
haha. Me too. Here's a couple simple ones that can get you started.
Code: Select all
With CreateObject("WScript.Shell")
.Run "Powershell Start-Sleep -Milliseconds 1000", 0, True
End With
Set PowerShell = CreateObject("WScript.Shell")
PowerShell.Run "Powershell Start-Sleep -Milliseconds 1000", 0, True
Set PowerShell = Nothing
Set PowerShell = CreateObject("WScript.Shell")
PowerShell.Run "Powershell -ExecutionPolicy Bypass -File C:\scripts\powershellscript.ps1", 0, True
Set PowerShell = Nothing
Re: Script Conditionally Save Attachement
Posted: 2020-12-01 03:49
by palinka
buskeyl wrote: ↑2020-12-01 02:56
Ha! Changed it to “contains” from “equals” and it worked. Sweet. Would like to understand why that was necessary?
If you don't specify "contains", it attempts to match the entire string.
does CONTAIN but does NOT EQUAL
john@doe.com
^string$ does not necessarily equal ^.*string.*$
Sometimes it does, most times it doesn't when it comes to email addresses.
Edit - if you're more comfortable with regex, there is an option to use it in rules. Its very helpful when you need to mix AND & OR in your criteria.
Re: Script Conditionally Save Attachement
Posted: 2020-12-01 06:45
by buskeyl
“if your more comfortable with REGEX”. Ha ha. Funny. Not even. I’ll learn them eventually. Spent may an hour on regexer.com. Still makes my head hurt. Good to know though. Thanks for all the help. It made total sense once you ‘splained it.
Re: Script Conditionally Save Attachement
Posted: 2020-12-01 12:05
by jimimaseye
Re: Script Conditionally Save Attachement
Posted: 2020-12-01 15:40
by SorenR
Easy peasy ...

Re: Script Conditionally Save Attachement
Posted: 2020-12-01 15:55
by palinka
SorenR wrote: ↑2020-12-01 15:40
Easy peasy ...
A dot is a matching character when enclosed in square brackets (no escaping)?
I just tested it on regex101 and yes, it matches as dot and NOT as any character. You can also escape it - there's no difference.
https://regex101.com/r/7qhw5I/1
I love new scraps of knowledge. This one might actually be useful one day.
