Error Enviar mail automatico

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
kotoqu
Aprendiz de Mago
Mensajes: 46
Registrado: 11 Oct 2008, 01:40

Error Enviar mail automatico

Mensaje por kotoqu »

Estimados. Gusto en saludarles. Les comento que he tenido algunos inconvenientes con un script que envia Mail automaticamente. He trabajado bien por mucho tiempo y funciona excelente... hasta que comencé a trabajar con VPN por medidas de seguridad y comenzó a lanzarme el error "Error code:2 Description:The transport failed to connect to the server."
También pasa lo mismo cuando ejecuto este script desde una máquina virtual (Google Cloud) sospecho que es algo relacionado con las DNS. Por favor si me puden iluminar respecto de esto. Se los agradezco mucho.

Aquí pego el código:

Código: Seleccionar todo


$SmtpServer 	= "mail.********.cl"              						
$FromName 	= "*******"                    
$FromAddress	= "correo@******.cl" 		
$ToAddress 	= "correo@******.cl" 			
$Subject 		= "Novedades"   			
$Body 		= "Hola Mundo"  
$AttachFiles 	= ""                      	
$CcAddress 	= $cc	     	
$BccAddress 	= "correo@******.cl" 
$Importance 	= "High"                 
$Username 	= "correo@******.cl"      
$Password 	= "123456"    
$IPPort 		= 25   
$ssl 			= 0     
;$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



Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Error Enviar mail automatico

Mensaje por Dany »

  • ............................................Imagen
    ......................................Imagen
kotoqu
Aprendiz de Mago
Mensajes: 46
Registrado: 11 Oct 2008, 01:40

Re: Error Enviar mail automatico

Mensaje por kotoqu »

Hola Dany. Gracias por el dato. Leí lo que me enviaste y entendí que mi ISP bloquea el envío porque mi I es de otro país distinto.
De hecho en mi Maquina Virtual (Google cloud) cambié la hora adecuándola a la de mi pais (Chile) pero tampoco funcionó.
Tampoco me quedó muy claro como solucionar definitivamente el tema.
Tendré que seguir explorando alternativas... pero te agradezco la info que me enviaste y por lo menos ya se de donde viene el problema...ahora solo tengo que buscar como solucionarlo.

Muchisimas Gracias.
kotoqu
Aprendiz de Mago
Mensajes: 46
Registrado: 11 Oct 2008, 01:40

Re: Error Enviar mail automatico

Mensaje por kotoqu »

Ahora si esta SOLUCIONADO. Seguí los consejos de Dany y cambie la fecha y hora de la Maquina Virtual. Luego fui a la configuración de mi servidor de correo y ví con que puertos trabajaba, en mi caso era puerto 26, yo estaba en 25.
Lo cambié y listo. ahora funciona. Supongo que lo mismo será para la VPN.

Doy el tema por cerrado y SOLUCIONADO.

Gracias Dany.
Responder