Jewtus Posted November 6, 2015 Posted November 6, 2015 I have a compiled tool that has a few options for command line arguments to kick off specific functions. I've tested them via the cmd line and they work great. What I'd like to do next is make it so my email notification contains a hyperlink to the file with the argument included. This is what I have for my email function that DOES work:Func SendEmails($addAddressee,$id) IsOutLookOpen() $olApp = ObjCreate("Outlook.Application") $objMail = $olApp.CreateItem(0) ;$olMailItem With $objMail .Save .Subject = ("A form needs review - ID: "&$id) .HTMLBody = ('Please open the tool by clicking <a href="'&@ScriptDir&"\"&@ScriptName&'">HERE</a>.') $oRecipients=.Recipients .Display EndWith For $z=0 to UBound($addAddressee)-1 If $addAddressee[$z]<> '' Then $resolver=$oRecipients.Add($addAddressee[$z]) $resolver.Resolve EndIf Next EndFuncand this works without issue but I want to make it so when they click the link, it also passes the command line arg:.HTMLBody = ('Please open the tool by clicking <a href="'&@ScriptDir&"\"&@ScriptName&" -CMD "&$id&'">HERE</a>.')Does anyone know how I can achieve this?
water Posted November 6, 2015 Posted November 6, 2015 I think you need to encode the spaces. Try %20 for a space. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Jewtus Posted November 6, 2015 Author Posted November 6, 2015 (edited) Ok so I messed around with it a bit:.HTMLBody = ('Please open the tool by clicking <a href='&StringReplace(@ScriptDir,' ','%20')&'\'&@ScriptName&'%20-CMD%20'&$id&'">HERE</a>.')and this generates the link but when I open the link it says the file isn't found... Something like thisCannot find the file '\\host\path\files\Test.exe -CMD 1'. Please verify the path or internet address is correctSo I tried to put quotes around the path and put the -CMD outside the quotes:.HTMLBody = ('Please open the tool by clicking <a href="'&StringReplace(@ScriptDir,' ','%20')&'\'&@ScriptName&'"%20-EMC%20'&$id&'">HERE</a>.')and when I do that, it just opens the EXE and doesn't pass the arg to the exe. Edited November 6, 2015 by Jewtus formatting
water Posted November 6, 2015 Posted November 6, 2015 I searched the web and got to the conclusion that it is not possible to call an exe and pass parameters using a link.I'd suggest to just start the exe without parameters and then use Outlook to grab the ID from the subject line of the current mail item. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Jewtus Posted November 6, 2015 Author Posted November 6, 2015 I'm not sure what you mean. I want the tool to operate normally, but I have a notifications section so when X action is performed, it notifies someone that they need to open the tool and go to a specific section. I was hoping to jump right to that section from the email. If I launch the tool normally, how would I go about grabbing the id from the email and passing it through to the application?
water Posted November 6, 2015 Posted November 6, 2015 (edited) When the tool is started you shouldCheck that Outlook is runningA mail item is activethe mail item has a subject of format "A form needs review - ID: "If this is True then grab the ID from the subject and jump to the section needed. Else run the program normally.This approach only works when the mail is being opened by Outlook. Edited November 6, 2015 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Jewtus Posted November 6, 2015 Author Posted November 6, 2015 (edited) hmmm seems it could leave room for a lot of potential errors... I did figure out a simple solution that does seem to work though... Build a bat and link to the bat file:Func SendEmails($addAddressee,$id) IsOutLookOpen() $olApp = ObjCreate("Outlook.Application") ;Build Launcher If FileExists(@ScriptDir&"\CMD\")=0 then DirCreate(@ScriptDir&"\CMD\") $cmdFile=@ScriptDir&"\CMD\"&$id&@MON&@MDAY&@YEAR&@HOUR&@MIN&@SEC&".bat" FileWrite($cmdFile,'"'&@ScriptDir&"\"&@ScriptName&'" -CMD '&$id) $objMail = $olApp.CreateItem(0) ;$olMailItem With $objMail .Save .Subject = ("A new form needs review - Project ID: "&$id) .HTMLBody = ('Please open the tool by clicking <a href="'&$cmdFile&'">HERE</a>.') $oRecipients=.Recipients .Display EndWith For $z=0 to UBound($addAddressee)-1 If $addAddressee[$z]<> '' Then $resolver=$oRecipients.Add($addAddressee[$z]) $resolver.Resolve EndIf Next EndFunc Edited November 6, 2015 by Jewtus
water Posted November 6, 2015 Posted November 6, 2015 But this only works when the bat file is created on the recipients machine.But why would you create a mail then? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Jewtus Posted November 6, 2015 Author Posted November 6, 2015 The tool is actually on a shared network dir so everyone is using the same folder structure. The mail is because no one will actually keep an eye on it because users suck. They want the system to send emails if anything ever changed and I told them they would get 20-30 notifications an hour if they did that so they settled to me just sending a summary email telling them to check. The launching the bat is just a way of accommodating users who are lame and don't want to do their job or read anything.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now