Sign in to follow this  
Followers 0
nkd

unable to create emailer

10 posts in this topic

hi all,

I am new to scripting. I am a IT admin who is responsible for a web server. I want to have a emailer script which transmits me the web server log file daily at a stipulated time. I understand the _INetSmtpMailCom () func can be used and there is a for the same in this forum.The code fragment from the above link is being used by me as it is. For ease of reference, I am enclosing the same :-

#Include<file.au3>

$SmtpServer = "smtp.gmail.com"          
$FromName = "nkd"                  
$FromAddress = "emailSender@gmail.com"
$ToAddress = "recepient@hotmail.com"
$Subject = "Userinfo"               
$Body = "< hi there >"                          
$AttachFiles = ""                  
$CcAddress = "" 
$BccAddress = ""    
$Importance = "Normal"              
$Username = "emailSender@gmail.com"            
$Password = "pass"             
$IPPort=465                      ; GMAIL port used for sending the mail
$ssl=1                          

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_FromAddress
;$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
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
;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

However, I am unable to get it to work and I get the error :-

The message could not be sent to the SMTP server. The transport

error code was 0x80040217. The server response was not available

Any clue shall be helpful. Thanks in advance

bye

nkd

Share this post


Link to post
Share on other sites



The UDF uses CDO. This is no longer available starting with Windows Vista. You can download and isntall it manually.

Which operating system do you use to send the mails?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

thanks a lot for your reply, I am using windows 7.

What should I do ? download and install the CDO ?

bye

nkd

Share this post


Link to post
Share on other sites

Please check this of mine.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Recommandation by MS: "Programs that use CDO should be re-designed to use other Application Programming Interfaces (APIs) instead of CDO."

Thanks for pointing that out.

As I am new to this , could you recommend an API for sending mail through smtp on windows 7.

Any links would be a gr8 help

thanks

nkd

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Do you have Outlook running on the machine where you want to run your script?

BTW: I just noticed that you post in the wrong forum. Questions and problems belong to the Help & Support forum!

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

sorry could not post due to limit of 3 posts.

No I donot have outlook on the same machine. I also found out that CDO is only installable on outlook 2007 and not on outlook 2010. Although a workaround that is possible. But, I donot have the flexibility to have these softwares on the server machine of the client due to security policy of the firm.

If CDO is discontinued there has to be a new framework or API ! Plz direct me to the same

thanks in advance.

bye

nkd

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

I could finally get the code to work . The mistake was a simple typo.

The UDF uses CDO. This is no longer available starting with Windows Vista.

BTW I didn't download the CDO manually and the script is working on a windows 7 32 bit machine. I have also verified that the cdosys.dll required for the CDO framework is available with windows 7 basic install.

I would like to simplify the original script for my specific usage, as under :-

#Include<file.au3>
$objEmail = ObjCreate("CDO.Message")
$objEmail.From = "n@gmail.com"
$objEmail.To = "a@gmail.com"                        
$objEmail.Subject = "Userinfo"                  
$objEmail.Textbody = "This Is The Body" & @CRLF         
                    
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport" = 465
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "n@gmail.com"
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "????"
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
$objEmail.Configuration.Fields.Update
$objEmail.Send

This however, gave me a error

Line 431 (File "C:UsersnkdDesktopmler.exe"):

Error:Error parsing function call.

This seems like a error during the call to :-

$objEmail = ObjCreate("CDO.Message")

Which if correct, means the CDO is not part of the file.au3 UDF !

I couldnot find anything else in the include directives of the original UDF by . Can someone point out the problem to me ?

Any help would be highly appreciated. thanks in advance.

nkd

Edited by nkd

Share this post


Link to post
Share on other sites

There was missing )

#Include<file.au3>
$objEmail = ObjCreate("CDO.Message")
$objEmail.From = "n@gmail.com"
$objEmail.To = "a@gmail.com"
$objEmail.Subject = "Userinfo"
$objEmail.Textbody = "This Is The Body" & @CRLF

$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "n@gmail.com"
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "????"
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
$objEmail.Configuration.Fields.Update()
$objEmail.Send()

Share this post


Link to post
Share on other sites

A parenthesis is missing at the end of this statement:

$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0