emendelson Posted March 27, 2014 Posted March 27, 2014 (edited) I searched the forum for a script that would create an e-mail message in the default mailto: handler, but could only find one that opened the default e-mail client, which is sometimes a different program. I wanted to have a script that would take an e-mail address and create a message in the mail client that opens on my system when I click a mailto: link. So I modified the existing code I found in another thread, by Brett Francis, and came up with this. It works in Thunderbird; I think it should work in Outlook. I don't know about any other mail client. I'd like to find a generic way to extend it to work with a subject line as a parameter, but I don't think that can be done in a way that works in any client. I hope this code might be useful to someone else, and will be grateful for any improvements: expandcollapse popup$to = "someone@somewhere.com" _LaunchDefaultMailtoHandler($to) ;=============================================================================== ; Function Name: _LaunchDefaultMailtoHandler() ; Description: Open default handler for Mailto url ; Parameter(s): $to = a valid e-mail address (someone@somewhere.com) ; Requirement(s): None ; Return Value(s): On Success - Launch default mailto: handler with message to address ; On Failure - Returns: ; 1-Reading of the registry Failed ; 2-Getting the Path Of the Default Mail Client Failed ; 3-Run Failed ; Author(s): Brett Francis <francisb[at]student[dot]jpc[dot]qld[dot]edu[dot]au> ; Modified for mailto: handler by Edward Mendelson ; Thanks: GaryFrost ; Zedna ; MrCreator ; Note(s): Tested only with Thunderbird ;=============================================================================== ; Func _LaunchDefaultMailtoHandler($to) Local $qt = Chr(34) Local $space = " " Local $Old_Opt_EES = Opt("ExpandEnvStrings", 1) Local $iRetError = 0, $iRetValue = 0 Local $ReadDefMailClient, $ReadCommand, $ReadExe $ReadCommand = RegRead("HKCR\mailto\shell\open\command", "") If @error Or $ReadCommand = "" Then $iRetError = 1 If $iRetError = 0 Then $ReadExe = $ReadCommand If StringRegExp($ReadExe, '"(.*)"') Then _ $ReadExe = StringMid($ReadExe, 2, StringInStr($ReadExe, '"', 0, 2) - 2) If StringInStr($ReadExe, '/') Then _ $ReadExe = StringLeft($ReadExe, StringInStr($ReadExe, '/', 0, -1)) EndIf If StringRight($ReadCommand, 5) = (" " & $qt & "%1" & $qt) Then _ $ReadCommand = StringTrimRight($ReadCommand, 5) If $iRetError = 0 Then $ReadExe = StringStripWS($ReadExe, 3) If Not FileExists($ReadExe) Then $iRetError = 2 EndIf If $iRetError = 0 Then $tostring = "" If Not $to = "" Then $tostring = $space & "mailto:" & $to Local $iRetValue = Run($ReadCommand & $tostring) If @error Then $iRetError = 3 EndIf Opt("ExpandEnvStrings", $Old_Opt_EES) Return SetError($iRetError, 0, $iRetValue) EndFunc ;==>_LaunchDefaultMailtoHandler Edited March 27, 2014 by emendelson
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