Jump to content

Smtp Mailer That Supports Html And Attachments.


Jos
 Share

Recommended Posts

It seems to be a Windows 7 related problem.

Can your friend in France do the tests?

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

 

Link to comment
Share on other sites

Can you post your code here? I have Windows 7 running in a virtual machine to test.

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

 

Link to comment
Share on other sites

When he uses email sender. He uses his account on it then it works well but when he uses my account ant send email to my other acc then he gets error.

; Include
;##################################
#Include
;##################################
; Variables
;##################################
$SmtpServer = "smtp.gmail.com"           ; address for the smtp-server to use - REQUIRED
$FromName = "Test"                   ; name from who the email was sent
$FromAddress = "kurfreeze@gmail.com" ; address from where the mail should come
$ToAddress = "infomakecashnow@gmail.com"" ; destination address of the email - REQUIRED
$Subject = "test"                ; subject from the email - can be anything you want it to be
$Body = "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 = "Normal"               ; Send message priority: "High", "Normal", "Low"
$Username = "username"                  ; username for the account used from where the mail gets sent - REQUIRED
$Password = "password"               ; password for the account used from where the mail gets sent - REQUIRED
;$IPPort = 465                          ; 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 & '" '
    $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, "") 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
                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 ("[url="http://schemas.microsoft.com/cdo/configuration/sendusing"]http://schemas.microsoft.com/cdo/configuration/sendusing[/url]") = 2
    $objEmail.Configuration.Fields.Item ("[url="http://schemas.microsoft.com/cdo/configuration/smtpserver"]http://schemas.microsoft.com/cdo/configuration/smtpserver[/url]") = $s_SmtpServer
    If Number($IPPort) = 0 then $IPPort = 25
    $objEmail.Configuration.Fields.Item ("[url="http://schemas.microsoft.com/cdo/configuration/smtpserverport"]http://schemas.microsoft.com/cdo/configuration/smtpserverport[/url]") = $IPPort
    ;Authenticated SMTP
    If $s_Username "" Then
        $objEmail.Configuration.Fields.Item ("[url="http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"]http://schemas.microsoft.com/cdo/configuration/smtpauthenticate[/url]") = 1
        $objEmail.Configuration.Fields.Item ("[url="http://schemas.microsoft.com/cdo/configuration/sendusername"]http://schemas.microsoft.com/cdo/configuration/sendusername[/url]") = $s_Username
        $objEmail.Configuration.Fields.Item ("[url="http://schemas.microsoft.com/cdo/configuration/sendpassword"]http://schemas.microsoft.com/cdo/configuration/sendpassword[/url]") = $s_Password
    EndIf
    If $ssl Then
        $objEmail.Configuration.Fields.Item ("[url="http://schemas.microsoft.com/cdo/configuration/smtpusessl"]http://schemas.microsoft.com/cdo/configuration/smtpusessl[/url]") = 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()
    MsgBox(0, "Error", "err.number is: " & $oMyError.number & @CRLF & _
     "err.windescription: " & $oMyError.windescription & @CRLF & _
     "err.description is: " & $oMyError.description & @CRLF & _
     "err.source is: " & $oMyError.source & @CRLF & _
     "err.helpfile is: " & $oMyError.helpfile & @CRLF & _
     "err.helpcontext is: " & $oMyError.helpcontext & @CRLF & _
     "err.lastdllerror is: " & $oMyError.lastdllerror & @CRLF & _
     "err.scriptline is: " & $oMyError.scriptline & @CRLF & _
     "err.retcode is: " & $oMyError.retcode & @CRLF & @CRLF)
EndFunc ;==>_MyErrFunc

(autoit tags dont works, buggy)

Edited by EdgarT
Link to comment
Share on other sites

The code you posted is buggy too (forum eating parts of the code?).

Statements like

If $s_Username  "" Then
have to be fixed.

I will use the original code by Jos.

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

 

Link to comment
Share on other sites

Yes, forum became buggy. "Post" buttond dont work, i have to click "More Reply Options" ant then click post. Autoit tags dont work normal. I would post more code if forum wouldnt eat it.

I didnt changed orginal code so you can use it

Edited by EdgarT
Link to comment
Share on other sites

I get the same error here (0x80040217).

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

 

Link to comment
Share on other sites

I assume the userid/password you posted in your script need to be changed before sending an email?

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

 

Link to comment
Share on other sites

The problem was that variables $Username and $Password were set to nonblank values. So the script tried to connect to GMail using this userid/password. As they are not valid you got the error.

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

 

Link to comment
Share on other sites

No no. They was set. When I used my own 2 gmails then when other ip tried to login gmail blocked it. I got few mails from gmail that someone is trying to hijack my account. When I wrote my friends gmail then he sent me mails without errors.

Gmail blocked any logins from other ip. Maybe with other mails would work? Yahoo or smthg?

Link to comment
Share on other sites

  • 4 weeks later...
  • Developers

Error code:2 Description:The transport failed to connect to the server.

and your question is something like : What is wrong with my code and you expect us to guess how your code looks?

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

  • 3 weeks later...

I need some help. I just switched our email server from on-premise exchange to Microsoft's 365 Office cloud. This script was working great before the change. The only changes I've made is $SmtpServer, $IPPort, and $ssl. I think its the SSL that is breaking it.

I know all credentials are correct as I am able to get it to work with PHP/Pear and Telnet. I've also tried Gmail settings and it gave me the same error. Do I have to enable some kind of SSL processing?

The error I get is:

### COM Error ! Number: 80020009 ScriptLine: 63 Description:The transport failed to connect to the server.

#include <Array.au3>
#include <File.au3>
#include <Inet.au3>
#include <_INetSmtpMailCom.au3>

$ToAddress = "bboyack@vandorproducts.com" ; destination address of item email
$Subject = "Test email"                  ; subject of item email

$EmlBody = "This is a test email sent from AutoIt" & @CRLF & @CRLF & "Enjoy!"
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
;##################################
; Variables
;##################################
$SmtpServer = "pod51018.outlook.com"             ; address for the smtp-server to use - REQUIRED
$FromName = "No Reply"                   ; name from who the email was sent
$FromAddress = "noreply@vandorproducts.com" ; address from where the mail should come
$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 = "Normal"               ; Send message priority: "High", "Normal", "Low"
$Username = "noreply@vandorproducts.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 = 587                        ; port used for sending the mail normaly 25
$ssl = 1                             ; enables/disables secure socket layer sending - put to 1 if using httpS
;##################################
; Script
;##################################
$SndEml = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $EmlBody, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)

Here is the _INetSmtpMailCom.au3 script:

;##################################
; Include
;##################################
#Include<file.au3>
;#Include<array.au3>
;
; 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, ";")
;_ArrayDisplay($S_Files2Attach)
     For $x = 1 To $S_Files2Attach[0]
         $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
         ConsoleWrite('@@ Debug(62) : $S_Files2Attach " & $x &": = ' & $S_Files2Attach[$x] & @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
Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...