tonycst Posted November 2, 2013 Share Posted November 2, 2013 I have this code i found. It works fine but i cant send attachment. Gives all sorts of errors. Anyone any good at this ? It sends me email just fine if i dont attach anything by simply pressing cancel. expandcollapse popup; ;################################## ; Include ;################################## #Include<file.au3> ;################################## ; Variables ;################################## $SmtpServer =IniRead ("Settings.ini","Email Settings","SmtpServer","") ; address for the smtp-server to use - REQUIRED $FromName = IniRead ("Settings.ini","Email Settings","FromName","") ; name from who the email was sent $FromAddress = IniRead ("Settings.ini","Email Settings","FromAddress","") ; address from where the mail should come $ToAddress = IniRead ("Settings.ini","Email Settings","ToAddress","") ; destination address of the email - REQUIRED $Subject = IniRead ("Settings.ini","Email Settings","Subject","") ; subject from the email - can be anything you want it to be $Body = IniRead ("Settings.ini","Email Settings","Subject","") ; the messagebody from the mail - can be left blank but then you get a blank mail $AttachFiles = FileOpenDialog ("","","Any (*.*)",4);IniRead ("Settings.ini","Email Settings","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 = IniRead ("Settings.ini","Email Settings","Importance","") ; Send message priority: "High", "Normal", "Low" $Username = IniRead ("Settings.ini","Email Settings","Username","") ; username for the account used from where the mail gets sent - REQUIRED $Password = IniRead ("Settings.ini","Email Settings","Password","") ; password for the account used from where the mail gets sent - REQUIRED $IPPort = IniRead ("Settings.ini","Email Settings","IPPort","") ; port used for sending the mail $ssl = IniRead ("Settings.ini","Email Settings","ssl","") ; 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 httpS ;################################## ; Script ;################################## Global $oMyRet[2] Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl) If @error Then MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc) EndIf ; ; The UDF 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_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress $objEmail.Subject = $s_Subject If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then $objEmail.HTMLBody = $as_Body Else $objEmail.Textbody = $as_Body & @CRLF EndIf If $s_AttachFiles <> "" Then Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") For $x = 1 To $S_Files2Attach[0] $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console If FileExists($S_Files2Attach[$x]) Then $objEmail.AddAttachment ($S_Files2Attach[$x]) Else ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) SetError(1) Return 0 EndIf Next EndIf $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 then $IPPort = 25 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort ;Authenticated SMTP If $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_Password EndIf If $ssl Then $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True EndIf ;Update settings $objEmail.Configuration.Fields.Update ; Set Email Importance Switch $s_Importance Case "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.Send If @error Then SetError(2) Return $oMyRet[1] EndIf $objEmail="" EndFunc ;==>_INetSmtpMailCom ; ; ; Com Error Handler Func 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 returns Return EndFunc ;==>MyErrFunc Link to comment Share on other sites More sharing options...
water Posted November 2, 2013 Share Posted November 2, 2013 All sorts of errors? Can you please post the output of the SciTE console pane so we all know what you are talking about? My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki  Link to comment Share on other sites More sharing options...
tonycst Posted November 2, 2013 Author Share Posted November 2, 2013 ### COM Error ! Number: 80020009  ScriptLine: 92  Description:The transport failed to connect to the server. or !> File not found to attach: C:UsersAdministratorDesktop|New Rich Text Document.rtf|New Text Document.txt when selecting multiple files At this point its gives 1st error without attaching anything and email doesnt get sent. Link to comment Share on other sites More sharing options...
Developers Jos Posted November 2, 2013 Developers Share Posted November 2, 2013 The second error is due to the wrong delimiter between the filenames. Semicolon is expected by the udf and fileopendialog uses vertical bar. So simply replace these verticalbar by a semicolon. Jos SciTE4AutoIt3 Full installer Download page  - Beta files    Read before posting   How to post scriptsource   Forum etiquette Forum Rules  Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
tonycst Posted November 2, 2013 Author Share Posted November 2, 2013 After some more research, turned out its ur code. Thanks for the multiple files select. I found your original post and posted question related to ### COM Error ! Number: 80020009  ScriptLine: 92  Description:The transport failed to connect to the server. there, that many have had. Ist strange, it workd last night. Link to comment Share on other sites More sharing options...
Developers Jos Posted November 2, 2013 Developers Share Posted November 2, 2013 I guess you meant to say that the problem is in your code ...not mine ...right? For the remaining error: Which Email provider are you using? when it is gmail or Yahoo you need to set the proper port and SSL. Jos SciTE4AutoIt3 Full installer Download page  - Beta files    Read before posting   How to post scriptsource   Forum etiquette Forum Rules  Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
tonycst Posted November 2, 2013 Author Share Posted November 2, 2013 Thats why i said "code that i found". Not claiming to own anything. i use google and i refferenced this page http://email.about.com/od/accessinggmail/f/Gmail_SMTP_Settings.htm It worked last night. Link to comment Share on other sites More sharing options...
Developers Jos Posted November 2, 2013 Developers Share Posted November 2, 2013 So, what did you change? Make sure you have these lines not commented when using Gmail: $IPPort=465 ; GMAIL port used for sending the mail $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS Jos SciTE4AutoIt3 Full installer Download page  - Beta files    Read before posting   How to post scriptsource   Forum etiquette Forum Rules  Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
tonycst Posted November 2, 2013 Author Share Posted November 2, 2013 (edited) i do. The only thing i changed is that it takes variables from INI file that i write with another script, thats all. Everything else is stock. This is the INI [Email Settings] FromName="Laptop" FromAddress="Laptop" ToAddress="myusername@gmail.com" Subject="" Body="" AttachFiles="" Importance="Normal" Username="myusername@gmail.com" Password="mypassword" IPPort="465" ssl="1" Edited November 2, 2013 by tonycst Link to comment Share on other sites More sharing options...
michaelslamet Posted November 2, 2013 Share Posted November 2, 2013 (edited) Try to change the FromAddress to a valid email address like myusername@gmail.com Edit: I use this UDF for sending email (with attachment) through gmail with no problem at all Edited November 2, 2013 by michaelslamet Link to comment Share on other sites More sharing options...
michaelslamet Posted November 2, 2013 Share Posted November 2, 2013 (edited) And you dont have a entry for SmtpServer in your INI file? [autoit] $SmtpServer =IniRead ("Settings.ini","Email Settings","SmtpServer","") [/autoit] And also, please try SMTP Port 587 Edited November 2, 2013 by michaelslamet Link to comment Share on other sites More sharing options...
tonycst Posted November 2, 2013 Author Share Posted November 2, 2013 (edited) sorry i didnt paste whole thing. i do have smtp entered. its there, i just forgot to paste it. FromAddress makes no difference. port 587 same error ScriptLine: 92Â Â Description:The transport failed to connect to the server. FYI i have no antivirus or any network protection at all, not even a firewall. Could Gmail block my email address from multiple attempts last night ? How would i find out ? all of my gmail setting at their default Edited November 2, 2013 by tonycst Link to comment Share on other sites More sharing options...
michaelslamet Posted November 3, 2013 Share Posted November 3, 2013 sorry i didnt paste whole thing. i do have smtp entered. its there, i just forgot to paste it. FromAddress makes no difference. port 587 same error ScriptLine: 92  Description:The transport failed to connect to the server. FYI i have no antivirus or any network protection at all, not even a firewall. Could Gmail block my email address from multiple attempts last night ? How would i find out ? all of my gmail setting at their default  To make sure if Gmail block your email address or not, try to login "manually" through gmail.com and sending an email through their inferface, then please try your script again Link to comment Share on other sites More sharing options...
tonycst Posted November 3, 2013 Author Share Posted November 3, 2013 (edited) sending email to my self thru gmail web interface works fine. script on the other hand doesnt. i must have messed up somewhere as usual and i just cant see it.  EDIT: Found it. As usual its my typo. I always make mistakes like that. too much of a HURRY  thank u much for wasting your time  on me . As you adviced i replaced | with ; for multiple files bu i still had problem sending even 1 files. This was due to fileopendialogue and iniread. Fileopendialogue would change working directory and settings.ini does not exist outside of script folder so i had to change Iniread ("Settings.ini" to @Scriptdir & "Settings.ini" and everything worked Edited November 3, 2013 by tonycst Link to comment Share on other sites More sharing options...
michaelslamet Posted November 3, 2013 Share Posted November 3, 2013 Glad you solve it Me too few time mess with INI file reading because of the fact that I dont use full path, so now I always put full path to make sure it point to a correct/existing file Link to comment Share on other sites More sharing options...
tonycst Posted November 8, 2013 Author Share Posted November 8, 2013 I also found that Live aka Outlook and Yahoo requires From address, where as Gmail doesnt. Link to comment Share on other sites More sharing options...
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