Jump to content
Sign in to follow this  
Basch

Help with a email script

Recommended Posts

Basch

I am currently trying to create a script to send stuff to my email but t keeps on messing up. Heres how the script looks:

#Include<file.au3>

$s_SmtpServer = "smtp.gmail.com"              
$s_FromName = "Name"                      
 $s_FromAddress = "Test@gmail.com"
$s_ToAddress = "*******"  
$s_Subject = "Userinfo"               
$as_Body = "Stuff"                          
$s_AttachFiles = ""                   
$s_CcAddress = "CCadress1@test.com"   
$s_BccAddress = "BCCadress1@test.com"   
$s_Username = "*******"                 
$s_Password = "*******"               
$IPPort = 465                           
$ssl = 1                                  
                            

Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
If @error Then
    MsgBox(0, "Error sending message", "Error code:" & @error & "  Rc:" & $rc)
EndIf
;

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0)
    $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])
            If FileExists($S_Files2Attach[$x]) Then
                $objEmail.AddAttachment ($S_Files2Attach[$x])
            Else
                $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
                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
    $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
; Sent the Message
    $objEmail.Send
    if @error then
        SetError(2)
        return $oMyRet[1]
    EndIf
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
I get this error:

ScriptLine: 69 Description:The transport failed to connect to the server.

Line 69 is the send line.

But I think I entered everything right, so does anyone have any idea what's wrong? Thanks in advance to all those that help.

Share this post


Link to post
Share on other sites
jvanegmond

I think Gmail bashes you because this is different:

$s_FromName = "Name"                      
$s_FromAddress = "Test@gmail.com"oÝ÷ Ú¬¶Þjëh×6$s_FromName = "Test"                      
$s_FromAddress = "Test@gmail.com"

and the username and password have to be right as well.

Share this post


Link to post
Share on other sites
Basch

Thanks a lot, it looks like it works now. :D

Share this post


Link to post
Share on other sites
BinaryBrother

I'm setting up a quick AutoIt crash indicator to email me when AutoIt crashes... But the below code....

#Include<file.au3>

$s_SmtpServer = "smtp.gmail.com"            
$s_FromName = "Binarybrotherauto"                   
$s_FromAddress = "binarybrotherauto@gmail.com"
$s_ToAddress = "*@gmail.com"
$s_Subject = "AutoIt Crashed"               
$as_Body = "AutoIt seems to have crashed."                          
$s_AttachFiles = ""                 
$s_CcAddress = ""   
$s_BccAddress = ""  
$s_Username = "binarybrotherauto@gmail.com"                 
$s_Password = "*********"               
$IPPort = 465                           
$ssl = 0                                
                            

Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
If @error Then
    MsgBox(0, "Error sending message", "Error code:" & @error & " Rc:" & $rc)
EndIf
;

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0)
    $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])
            If FileExists($S_Files2Attach[$x]) Then
                $objEmail.AddAttachment ($S_Files2Attach[$x])
            Else
                $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
                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
    $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
; Sent the Message
    $objEmail.Send
    if @error then
        SetError(2)
        return $oMyRet[1]
    EndIf
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

Give me these...

>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Documents and Settings\Administrator\My Documents\send mail.au3"  
### COM Error ! Number: 800401F3 ScriptLine: 27 Description:
### COM Error ! Number: 000000A9 ScriptLine: 28 Description:
### COM Error ! Number: 000000A9 ScriptLine: 29 Description:
### COM Error ! Number: 000000A9 ScriptLine: 34 Description:
### COM Error ! Number: 000000A9 ScriptLine: 38 Description:
### COM Error ! Number: 000000A9 ScriptLine: 53 Description:
### COM Error ! Number: 000000A9 ScriptLine: 54 Description:
### COM Error ! Number: 000000A9 ScriptLine: 55 Description:
### COM Error ! Number: 000000A9 ScriptLine: 58 Description:
### COM Error ! Number: 000000A9 ScriptLine: 59 Description:
### COM Error ! Number: 000000A9 ScriptLine: 60 Description:
### COM Error ! Number: 000000A9 ScriptLine: 66 Description:
### COM Error ! Number: 000000A9 ScriptLine: 68 Description:
>Exit code: 0   Time: 3.571

A message box also appears with

| Error Sending Message |
                         error code:2 rc:

Thanks in advance for your assistance. :D

Edited by BinaryBrother

Share this post


Link to post
Share on other sites
Swift

Please Don't Hijack Someone Elses Topic... Create Your Own!

Share this post


Link to post
Share on other sites
BinaryBrother

Please Don't Hijack Someone Elses Topic... Create Your Own!

What I posted is indeed the same 'topic', no? Correction, I'm not 'hijacking' anything because contextually speaking, this topic has been previously fixed by the topic creator. Why not merely pend more information to a 'related' topic? What I'm really looking for here is some kind help. Going out of your way to tell me to post somewhere else, isn't very much help.

Thanks, BinaryBrother

Share this post


Link to post
Share on other sites
Swift
:P Whatever...I Tried.... :D

Share this post


Link to post
Share on other sites
BinaryBrother

;) Whatever...I Tried.... :P

Ok, I just don't understand why that posting material that is 'on topic' inside someone else's topic is a Forum violation? If I've ever noticed anything about 'Forums' is that, your quickest responses come as irrelevant corrections. :D

Share this post


Link to post
Share on other sites
bacobampense

I found this other version of the script that has been working for me.

What else are you trying to do with this. I made a gui version that opens a box for input and then sends me the input.

Hope this helps.

Alex

;###################################################################################################

###

; This section contains the email out configuration, variables, settings and commands. it will be transparent to the users.

;###################################################################################################

###

#Include<file.au3>

Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

;###################################################################################################

###

; Include

;###################################################################################################

###

#Include<file.au3>

;###################################################################################################

###

; Variables

;###################################################################################################

###

$s_SmtpServer = "smtp.gmail.com" ; address for the smtp-server to use - REQUIRED

$s_FromName = "Service Alerts" ; name from who the email was sent

$s_FromAddress = "" ; address from where the mail should come

$s_ToAddress = "destination@gmail.com" ; destination address of the email - REQUIRED

$s_Subject = "" ; subject from the email - can be anything you want it to be

$as_Body = "";$rmessage ; the messagebody from the mail - can be left blank but then you get a blank mail

$s_AttachFiles = "" ; the file you want to attach- leave blank if not needed

$s_CcAddress = "" ; address for cc - leave blank if not needed CCadress1@test.com

$s_BccAddress = "" ; address for bcc - leave blank if not needed BCCadress1@test.com

$s_Username = "yourgmailacct@gmail.com" ; username for the account used from where the mail gets sent - Optional (Needed for eg GMail)

$s_Password = "your password" ; password for the account used from where the mail gets sent - Optional (Needed for eg GMail)

;~ $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($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)

If @error Then

MsgBox(0, "Error sending message", "Error code:" & @error & " Rc:" & $rc)

EndIf

;

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0)

$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])

If FileExists($S_Files2Attach[$x]) Then

$objEmail.AddAttachment ($S_Files2Attach[$x])

Else

$i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]

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

$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

; Sent the Message

$objEmail.Send

if @error then

SetError(2)

return $oMyRet[1]

EndIf

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

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  

×