tonycst Posted November 2, 2013 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
water Posted November 2, 2013 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 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
tonycst Posted November 2, 2013 Author 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.
Developers Jos Posted November 2, 2013 Developers 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.
tonycst Posted November 2, 2013 Author 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.
Developers Jos Posted November 2, 2013 Developers 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.
tonycst Posted November 2, 2013 Author 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.
Developers Jos Posted November 2, 2013 Developers 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.
tonycst Posted November 2, 2013 Author 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
michaelslamet Posted November 2, 2013 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
michaelslamet Posted November 2, 2013 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
tonycst Posted November 2, 2013 Author 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
michaelslamet Posted November 3, 2013 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
tonycst Posted November 3, 2013 Author 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
michaelslamet Posted November 3, 2013 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
tonycst Posted November 8, 2013 Author Posted November 8, 2013 I also found that Live aka Outlook and Yahoo requires From address, where as Gmail doesnt.
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