Página 1 de 1

Error Enviar mail automatico

Publicado: 15 Sep 2016, 17:45
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




Re: Error Enviar mail automatico

Publicado: 15 Sep 2016, 18:00
por Dany

Re: Error Enviar mail automatico

Publicado: 15 Sep 2016, 18:53
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.

Re: Error Enviar mail automatico

Publicado: 15 Sep 2016, 19:17
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.