AndroidZero Posted September 26, 2017 Share Posted September 26, 2017 (edited) Hej I'm not sure if i'm in the correct Forum corner but I hope you won't be too angry on me. So I am using SmtpMailer from JOS & mLipok. It works fine on my windows 7 computer but If I use it on my windows xp I get following error: ### COM Error ! Number: 80029C4A ScriptLine: 66 Description: "C:\Dokumente und Einstellungen\andi k\Eigene Dateien\Downloads\Mail(1).au3" (66) : ==> Variable must be of type "Object".: $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1 $objEmail.Configuration.Fields^ ERROR And here is the full script: expandcollapse popup; ;################################## ; Include ;################################## #Include<file.au3> ;################################## ; Variables ;################################## $SmtpServer = "smtp-mail.outlook.com" ; address for the smtp-server to use - REQUIRED $FromName = "Andy" ; name from who the email was sent $FromAddress = "*******@outlook.com" ; address from where the mail should come $ToAddress = "*******@outlook.com" ; destination address of the email - REQUIRED $Subject = "REGISTRATION REQUEST" ; subject from the email - can be anything you want it to be $Body = "Registration Request:" ; the messagebody from the mail - can be left blank but then you get a blank mail $AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - 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 = "*******@outlook.com" ; 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 = 1 ; 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 : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console If FileExists($S_Files2Attach[$x]) Then ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF) $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 Edited September 26, 2017 by AndroidZero Link to comment Share on other sites More sharing options...
Developers Jos Posted September 26, 2017 Developers Share Posted September 26, 2017 1 hour ago, AndroidZero said: but If I use it on my windows xp I get following error: Is this WinXP SP3 or older? Might need to do some Googling on this to see whether it is supported for your version. 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...
AndroidZero Posted September 26, 2017 Author Share Posted September 26, 2017 It is Windows XP SP3 Link to comment Share on other sites More sharing options...
Developers Jos Posted September 26, 2017 Developers Share Posted September 26, 2017 First hit on my Google search: https://www.experts-exchange.com/questions/21080632/Please-help-System-Web-Mail-cannot-access-CDO-Message-HTTPException.html See if that helps. 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...
AndroidZero Posted September 26, 2017 Author Share Posted September 26, 2017 Okey I registered CDONTS.dll but still doesnt work. Maybe this error message looks more familiar to you Error code:2 Description: Can not send message to SMTP Server. Transport Code: 0x800CCC67 Server Antwort: 421 Cannot connect to SMTP server 40.101.61.130 (40.101.61.130:25), connect error 10060 This is on a friends computer (windows 7). Link to comment Share on other sites More sharing options...
KickStarter15 Posted September 27, 2017 Share Posted September 27, 2017 Hi @AndroidZero, Please try this. See if it works. I've got the same issue before and having hard time figuring it out how to solved. expandcollapse popup; ;################################## ; Include ;################################## #Include<file.au3> ;################################## ; Variables ;################################## Global $SmtpServer = "SMTPserver" ; address for the smtp-server to use - REQUIRED $FromName = "Andy" ; name from who the email was sent $FromAddress = "no-reply@outlook.com" ; address from where the mail should come $ToAddress = "***@outlook.com" ; destination address of the email - REQUIRED $Subject = "Testing" ; subject from the email - can be anything you want it to be $Body = "This is just a test" ; the messagebody from the mail - can be left blank but then you get a blank mail $AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed $CcAddress = "" ; address for cc - leave blank if not needed $BccAddress = "" ; address for bcc - leave blank if not needed $Importance = "High" ; 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 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 : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console If FileExists($S_Files2Attach[$x]) Then ;~ ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF) $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") = 0 $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 ("<a href='http://schemas.microsoft.com/cdo/configuration/smtpusessl' class='bbc_url' title='External link' rel='nofollow external'>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 Programming is "To make it so simple that there are obviously no deficiencies" or "To make it so complicated that there are no obvious deficiencies" by C.A.R. Hoare. Link to comment Share on other sites More sharing options...
Developers Jos Posted September 27, 2017 Developers Share Posted September 27, 2017 Are you sure about the used post (25) for secure SMTP or should that be something like port 587? 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...
AndroidZero Posted September 27, 2017 Author Share Posted September 27, 2017 (edited) @KickStarter15, Thanks for your reply, but this code doesn't work for me not even on my own computer. This is the error I get alway from your example @Jos, the port 587 never worked on my computer or any other i have tested, so i kept 25. This comes with Port 587 if I use it on my computer with the correct SMTP Function which works on Port 25. Edited September 27, 2017 by AndroidZero Link to comment Share on other sites More sharing options...
Developers Jos Posted September 27, 2017 Developers Share Posted September 27, 2017 (edited) 13 minutes ago, AndroidZero said: the port 587 never worked on my computer or any other i have tested, so i kept 25. That feels like the wrong reason to me. A quick search on the internet gave me that answer so you better use the right settings or else it will never work. https://www.lifewire.com/what-are-the-outlook-com-smtp-server-settings-1170671 I can't test it myself as I do not have and outlook.com emailaddress so maybe somebody else has tested this? Is port 587 allowed? Does this account work on a regular email client from this pc? Jos Edited September 27, 2017 by 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...
KickStarter15 Posted September 28, 2017 Share Posted September 28, 2017 @AndroidZero, Hmm that seems not right. Maybe Jos has point with the port. Anyways, is your ***outlook.com accepting "no-reply" from SMTPserver and has email re-layer enabled as well? Also, you attached error snippet is not downloadable (or maybe just my computer). Can you provide the snippet of this error? Programming is "To make it so simple that there are obviously no deficiencies" or "To make it so complicated that there are no obvious deficiencies" by C.A.R. Hoare. Link to comment Share on other sites More sharing options...
AndroidZero Posted September 29, 2017 Author Share Posted September 29, 2017 Well I couldn't find such an option like "accept no-reply from SMTPServer" "re-layer enabled" etc. Would be nice if you could tell me where I can find this options in outlook.com @KickStarter15 @Jos I created an account for POP3 & IMAP on my computer with Outlook 2013 and it got no connection. Im pretty confused where the problem is now because the CDO script works on my computer with Port 25 and SSL enabled. Link to comment Share on other sites More sharing options...
Developers Jos Posted September 29, 2017 Developers Share Posted September 29, 2017 1 minute ago, AndroidZero said: Im pretty confused where the problem is now because the CDO script works on my computer with Port 25 and SSL enabled. What do you mean with : It works? You are showing only screenshots with errors. 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...
AndroidZero Posted September 29, 2017 Author Share Posted September 29, 2017 Here is a successfull test for example: Link to comment Share on other sites More sharing options...
Developers Jos Posted September 29, 2017 Developers Share Posted September 29, 2017 ok... so you have no issue anymore and things work for you? 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...
AndroidZero Posted September 29, 2017 Author Share Posted September 29, 2017 Hahahaha that would be a dream My only problem is that this script (in the image you can see it) that works on my computer but not on a friends computer. He get the error messages from above Link to comment Share on other sites More sharing options...
Developers Jos Posted September 29, 2017 Developers Share Posted September 29, 2017 Ok, but at least the script should be correct. Still strange to me that it works with port 25, which normally is used for basic SMTP. Have you googled for that error message you get to see what other say? General rule of thumb is that you aren't the first one getting a particular error. 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...
AndroidZero Posted October 6, 2017 Author Share Posted October 6, 2017 I found finally the reason why it didnt't work on some computers of my friends. Needed admin rights simply added it to my script and it worked thanks for all of your replys and suggestions. #RequireAdmin If Not IsAdmin() Then Exit EndIf 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