Recommended Posts

13lack13lade 21

13lack13lade 21

Since im using the internal smtp server there is no passwords needed etc however in my gui i have input box for email address and an edit box for the text however im not sure how i can correctly code it so that when they press 'Send' button it will use the input value for email address as $FromAddress and the edit box as $Body. getting stuck as my gui's are in functions and i cant seem to correctly put this in a function to call it with a button to make it send using the input values..

little bit of 'function syntax 101' would be good lol

Share this post

Link to post

Share on other sites

kylomas 412

kylomas 412

The structure of your code should look something like this (untested - no email server)...

#include <GUIConstantsEx.au3>#include <WindowsConstants.au3>#include <file.au3>Global$oMyRet[2]Global$oMyError=ObjEvent("AutoIt.Error","MyErrFunc")
example()func example()local$gui010=guicreate('Call Mailer with Parameters')local$inp010=guictrlcreateinput('Enter Destination Email Address',20,20,400,20)local$edt010=guictrlcreateedit('Enter Comments',20,50,360,300)local$btn010=guictrlcreatebutton('Send',20,370,360,20)guisetstate()while1switchguigetmsg()case$gui_event_closeReturncase$btn010_send_mail(guictrlread($inp010),guictrlread($edt010))EndSwitchWEndEndFuncfunc_send_mail($to,$comment)$SmtpServer="****************"; address for the smtp-server to use - REQUIRED$FromName="******************"; name from who the email was sent$FromAddress="******************"; address from where the mail should come$ToAddress=$to; <<<--------------------------------------------------------------------------------------------------$Subject="TEST"; subject from the email - can be anything you want it to be$Body=$comment; <<<--------------------------------------------------------------------------------------------------$AttachFiles=""; the file you want to attach- leave blank if not needed$CcAddress=""; address for cc - leave blank if not needed$BccAddress=""; address for bcc - leave blank if not needed$Importance="Normal"; Send message priority: "High", "Normal", "Low"$Username="******************"; username for the account used from where the mail gets sent - REQUIRED$Password="**********"; password for the account used from where the mail gets sent - REQUIRED$IPPort=587; port used for sending the mail$ssl=0; enables/disables secure socket layer sending - put to 1 if using httpS$rc=_INetSmtpMailCom($SmtpServer,$FromName,$FromAddress,$ToAddress,$Subject,$Body,$AttachFiles,$CcAddress,$BccAddress,_$Importance,$Username,$Password,$IPPort,$ssl)If@errorThenMsgBox(0,"Error sending message","Error code:"&@error&" Description:"&$rc)EndIfendfuncFunc_INetSmtpMailCom($s_SmtpServer,$s_FromName,$s_FromAddress,$s_ToAddress,$s_Subject="",$as_Body="",$s_AttachFiles="",$s_CcAddress="",$s_BccAddress="",$s_Importance="Normal",$s_Username="",$s_Password="",$IPPort=25,$ssl=0)Local$objEmail=ObjCreate("CDO.Message")$objEmail.From='"'&$s_FromName&'" <'&$s_FromAddress&'>'$objEmail.To=$s_ToAddressLocal$i_Error=0Local$i_Error_desciption=""If$s_CcAddress<>""Then$objEmail.Cc=$s_CcAddressIf$s_BccAddress<>""Then$objEmail.Bcc=$s_BccAddress$objEmail.Subject=$s_SubjectIfStringInStr($as_Body,"<")AndStringInStr($as_Body,">")Then$objEmail.HTMLBody=$as_BodyElse$objEmail.Textbody=$as_Body&@CRLFEndIfIf$s_AttachFiles<>""ThenLocal$S_Files2Attach=StringSplit($s_AttachFiles,";")For$x=1To$S_Files2Attach[0]$S_Files2Attach[$x]=_PathFull($S_Files2Attach[$x])ConsoleWrite('@@ Debug(62) : $S_Files2Attach = '&$S_Files2Attach&@LF&'>Error code: '&@error&@LF);### Debug ConsoleIfFileExists($S_Files2Attach[$x])Then$objEmail.AddAttachment($S_Files2Attach[$x])ElseConsoleWrite('!> File not found to attach: '&$S_Files2Attach[$x]&@LF)SetError(1)Return0EndIfNextEndIf$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")=2$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")=$s_SmtpServerIfNumber($IPPort)=0then$IPPort=25$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=$IPPort;Authenticated SMTPIf$s_Username<>""Then$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername")=$s_Username$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword")=$s_PasswordEndIfIf$sslThen$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl")=TrueEndIf;Update settings$objEmail.Configuration.Fields.Update; Set Email ImportanceSwitch$s_ImportanceCase"High"$objEmail.Fields.Item("urn:schemas:mailheader:Importance")="High"Case"Normal"$objEmail.Fields.Item("urn:schemas:mailheader:Importance")="Normal"Case"Low"$objEmail.Fields.Item("urn:schemas:mailheader:Importance")="Low"EndSwitch$objEmail.Fields.Update; Sent the Message$objEmail.SendIf@errorThenSetError(2)Return$oMyRet[1]EndIf$objEmail=""EndFunc;==>_INetSmtpMailCom;;; Com Error HandlerFunc MyErrFunc()$HexNumber=Hex($oMyError.number,8)$oMyRet[0]=$HexNumber$oMyRet[1]=StringStripWS($oMyError.description,3)ConsoleWrite("### COM Error ! Number: "&$HexNumber&" ScriptLine: "&$oMyError.scriptline&" Description:"&$oMyRet[1]&@LF)SetError(1); something to check for when this function returnsReturnEndFunc;==>MyErrFunc