Open an email template

If you want to provide an easy way for someone to contact you, this snippet aims to open an email template in the system default email program.

To use the code in a help file - which may be useful for developers to collect feedback - you would insert an action and define the action helper as the procedure file containing the ComposeAnEmail() function.

function Demo()
	NewPanel
	Button button1,pos={10,10},size={20,15},title="",Picture=ProcGlobal#pMail, Proc=ButtonProc
	Button button1,help={"Email the developer"}
end

function ButtonProc(STRUCT WMButtonAction &s) : ButtonControl
	if (s.eventCode == 2) // mouseup
		ComposeAnEmail()
	endif
	return 0
end

function ComposeAnEmail([string user, string domain, string subject, string body])
	domain = SelectString(ParamIsDefault(domain), domain, "uni-ingolstadt.de")
	user = SelectString(ParamIsDefault(user), user, "victor.frankenstein")
	subject = SelectString(ParamIsDefault(subject), subject, "Message from an Igor Pro user")
	body = SelectString(ParamIsDefault(body), body, "Type your message here")
	user = URLencode(user)
	domain = URLencode(domain)
	subject = URLencode(subject)
	body = URLencode(body)
	string cmd = ""
	sprintf cmd, "mailto:%s@%s?subject=%s&body=%s" user, domain, subject, body
	BrowseURL/Z cmd
	
	return V_flag
end

// PNG: width= 198, height= 48
Picture pMail
	ASCII85Begin
	M,6r;%14!\!!!!.8Ou6I!!!#=!!!!Q#R18/!(p&k=TAF%&TgHDFAm*iFE_/6AH5;7DfQssEc39jTBQ
	=U#;&M85u`*!mG5Nmir1#)n>FO/#6h#UA#F,q6:(,?!iI#lEYSod*Qq$@KU,Mh.,7X&l;B/R$c`uC#
	XWF=hJfM_\:TX.;b+[C^qj#rIg<`,cbt$BeAV:SrIbT9(Q#>B5PfiDUIc)O&-0Lb3$a5e5hC.+rV@6
	^0/&,k[^Wa9l-h$$ZA`TX$UG=:!)P;7!W9"9e'h6WLUj_Oo6Fpgein`uo_X&7//APB[9=85+oQk^&4
	3%()H9]Gr0W(><)k65VL];q(IEYg?pGDp$2d"780!8uJ<W[&^lKf*V,Sq,TGqEDQN%B25dae7A=Cai
	ZIpeg(rJ&srr)`aHF6qqa,_<N(rk(?V8J6OL,E4HeR2\ST<@KY)u'+$U$F`pR7mU9jBl)m(A@LsVmb
	p&cC@fq4[!4hCFb]nE;I40UMN%V4ot^P;8hGP+TUH^jTVq@UXa)_G\Gs2eS7C9jmbor_o"iXDJfLUB
	FS'X1`EX"6_i$7qCk7.ND?AR!9j1S\@fJ]i7Qf=MaaCS[9D5;gU!Q_]Y#6!:2<,dq=A7BH<bEn:tRu
	_cR9`r/#"FqE-+.3aQ&pAB]H!=6rA']7hiqpiG_-R<ZTaO)tj`?<%9dcS5?"ZWL<X\;Q8=,E'iN\%d
	TQ4(r3(Igt^]Cki`:;1i_/F*$$'Yk2p9Y`fNfhTW5#'>L[Vr:oLD:;9T:Z"oop48R,P,71oh5`RWKR
	P0)e?n!-Qn,E'GG`?KG,[lD5)U5?c\'Jr\*_,2bM2dl^6_Vk_,ROI.Q.$i1Q(dKosZs#%$*$"a*JgL
	ga3!sT`$3n;cEH#k.MFKm/[+fEtrh,nj1CfG^]=<Rrr52A_('+F&G!#2b_iCHn/Gb*Q-B'oD$?%^:$
	t.R5/hScr3.`,Nd5f/kMMmCNPr+4LiSZ,sceL2S2NCcJX6anb<MH,m!tL@.T.C*IR)[Nk[o\<:21/R
	b$CW)WE"r:_@2M6`35U?#-3tS2Ktgat#/J7;f:9a=6;`u_;:)BW#=ma&QA,FAAjXf..4UTTW#EQ'E,
	ZMlM'jtWIrU-]puE,REGuVmMe=^DIrId^"cXT`3/Z8+;])SeK>W]nl<+f+^DqChnJ$^lRa<l#[9Ch\
	S`9GCqmYncE^EX(eSo\T#1GCl3G(KbRO52@YF2RO)ND;ni.U+dqE!,KLiPV1@@AOgcHaG=ifPJmc"7
	WHU&Z%h-km#k)?oHn;mY/1,Y8!QNIup/T?g`m^OQ:O\diltp@mQ+r.udTlodcuSOU;!7kU,qV,E]h#
	7Ets;F)q%6bQg8i6X;4</lK`@X!#4\Qj#ec7o]^e!qVKb@,U=f<Ut-n30L_YkJjrF;bZ#&*&!k-'Lp
	P31Ngl$"bNJZ/DQ]X.ec<S5;o1_(C[M'CAI?_f>IAV-m+6P<Hl1$5t935C`ZcBpp_M'>K"pH4pGk`K
	<on!JFrb2%'SI'+T@0gmifP3;cJPU\g?dF)r"Erqq<i#d/>mMo*2hVJ2?#K$rD_oQn4@2CB3&=nX]?
	E&beeeeVS!?`.3\PtH,J_$u9)q`&0<.G89.ispi3I/3>E]M8`(\Cr\"=fBBFUQ?a8-48[<cZ+D_52O
	lVodhN:cd,mFURfM;nF5oYk_+<q'EGc.@)YhBk<4SbRCgLITr?T/F5>aHn)(m)IX[$SlZdl-"p"#Vl
	p-kJm-O)sh7Im6hogJ>\(dKafcFX#'U,55Yhq5pT?f/iLIHM!hIEcG(CVrnfJ=KW!PnBTKp>)G/-Ec
	t'Wg<qQES3=3&h=i>S!Z)e&9AMM5MbP;+"H_0`][8X(o$\:/4Q3),BsX!q<?&Hs#K)>f!']mdBKCG_
	a/ZfQ#^&h0G$u0,.`Ij7"BO@71,"NLr2)J:`O9=?^Z?L_:%55B'!s"V&MW>T@0?&I"/\3224\L>uAu
	9GgVr6/r-/.&3Ho3#9[ON,H+_j5]/jUS)&S3'KMq\(dIaDn"J\4:2uS*,b&GY-Ge+om/S\4iRBu4b1
	qtihMB_L>pkBh?Eu8hr!Jdo[NGK]03i6&%B$WQ>KJf6,UQZH[GX%*S*4W8WlWBdt&p)q!d6p"\"rQg
	raq&jgT0cnG;tg8WosB_`+!^UR99,Wr`#4I%tKl$3^F)^QNS*!K@"elFLlt3U!s/Zj*VM#mJ-43I%E
	bBJu>jnq$91ctkUMrSVnNk:N%Dbhjtj\IP^eqr>^-hI?Q$?n`^\U(E941UVCaU*sP+(m%Xp'_np9]p
	),863mU!#W;fO85*>XZqd=HI0bFd&-O08k,7-WNN/ui"G-:_s%e4X!WX&ILVtkTkdlepa2^+dUJ[$s
	8LP8[OC]<_Cj+SNb2kC/Is%t+1ZB<6>dW*kh=EkH<Y\a%>gqO0!!!!j78?7R6=>B
	ASCII85End
end

I haven't tested this much so I'd appreciate feedback on whether it works on various systems.

Works okay with Mac 11.7.9 (Big Sur) and Thunderbird.

You should be able to use BrowseURL instead of ExecuteScriptText. Inserting body text should be easy as well...just use something like

sprintf cmd, "mailto:%s@%s?subject=%s&body=%s" user, domain, subject, body

Each field (user, domain, subject, body) should likely be passed through URLEncode first. You are already encoding spaces in the subject but other non-ascii characters also need to be encoded.

 

IIRC, Gmail users will need to click a button in the location bar in order for mailto links to use Gmail.

Ah, thanks, I should have thought of that. BrowseURL makes it trivial.

Forum

Support

Gallery

Igor Pro 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More