Help with INetSmtpMailCom

7 posts in this topic

erik7426 0

I don't remember who created it, but I have been using INetSmtpMailCom for years with no issues. I had been using AutoIt v.3.3.8.1 and the associated version of SciTE. Today I upgraded to AutoIt v.3.3.12.0 and upgraded SciTE as well. When using 'SyntaxCheck Prod' from the Tools menu within SciTE it now flags an error on the following line:

$objEmail.To = $s_ToAddress

The error is ""C:Program FilesAutoIt3Include_INetSmtpMailCom.au3"(31,12) : error: missing separator character before keyword."

In v.3.3.8.1 I did not get this error. I have tested the email function and it still works. So, it appears SciTE is flagging an erroneous error. Is there any was to fix it since I have grown quite accustomed to using the SyntaxCheck function and I would prefer to not have to 'ignore' a false error?

Also, I am open to suggestions for other smtp email functions. I just found and started using INetSmtpMailCom because it was the only one I found at the time that allowed for file attachments.

Below is my entire _INetSmtpMailCom.au3

#include <File.au3>;##################################; Variables;##################################$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=""; destination address of the email - REQUIRED$Subject=""; subject from the email - can be anything you want it to be$Body=""; the messagebody from the mail - can be left blank but then you get a blank mail$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=25; port used for sending the mail$ssl=0; enables/disables secure socket layer sending - put to 1 if using httpS;$IPPort=465 ; GMAIL port used for sending the mail;$ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpSGlobal$oMyRet[2]Global$oMyError=ObjEvent("AutoIt.Error","MyErrFunc")Func_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)MsgBox(0,"","### COM Error ! Number: "&$HexNumber&" ScriptLine: "&$oMyError.scriptline&" Description:"&$oMyRet[1]&@LF)SetError(1); something to check for when this function returnsReturnEndFunc;==>MyErrFunc

Anticipating Errors : "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Share this post

Link to post

Share on other sites

ur 1

---------------------------
sendmail error: 2
---------------------------
The message could not be sent to the SMTP server. The transport error code was 0x80040217. The server response was not available
---------------------------
OK
---------------------------