Pregunta

Ejecuté el siguiente script en la versión Mac OSX de TCL y funcionó bien, sin embargo, se cuelga de Activestate TCL en una máquina de Windows 7

proc send_simple_message {recipient email_server subject body} {
          package require smtp
          package require mime

    set token [mime::initialize -canonical text/plain -string $body]
          mime::setheader $token Subject $subject
          smtp::sendmessage $token \
                    -ports 587 \
                    -debug 1\
                    -username myAccount@gmail.com \
                    -password myPassword \
                    -recipients $recipient -servers $email_server
          mime::finalize $token
}

send_simple_message myAccount@gmail.com smtp.gmail.com \
    "This is the subject." "This is the message."

¿Alguna idea de qué podría estar mal en el sistema Activestate? (Es una nueva instalación de Activestate, lo descargó hace un par de días).

ACTUALIZACIÓN: Creo que fue congelado debido al firewall Corp (tendré que hablar con alguien sobre eso). Sin embargo, aunque pueda llegar más lejos cuando no revisar la red Corp, todavía no entrega el mensaje. Recibo la siguiente información de depuración:

Trying smtp.gmail.com...
<-- 220 mx.google.com ESMTP d8sm8712528ibl.1
--> EHLO ush10900dv (wait upto 300 seconds)
<-- 250-mx.google.com at your service, [32.178.65.125]
<-- 250-SIZE 35882577
<-- 250-8BITMIME
<-- 250-STARTTLS
<-- 250 ENHANCEDSTATUSCODES
--> STARTTLS (wait upto 300 seconds)
<-- 220 2.0.0 Ready to start TLS
--> EHLO ush10900dv (wait upto 300 seconds)
<-- 250-mx.google.com at your service, [32.178.65.125]
<-- 250-SIZE 35882577
<-- 250-8BITMIME
<-- 250-AUTH LOGIN PLAIN XOAUTH
<-- 250 ENHANCEDSTATUSCODES
--> MAIL FROM:<peddy@ush10900dv> SIZE=245 (wait upto 600 seconds)
<-- 530-5.5.1 Authentication Required. Learn more at

<-- 530 5.5.1 http://mail.google.com/support/bin/answer.py?answer=14257 d8sm8712528ibl.1
--> RSET (wait upto 0 seconds)
--> QUIT (wait upto 0 seconds)
handshake failed: resource temporarily unavailable
    while executing
"::tls::handshake $state(sd)"
    invoked from within
"smtp::sendmessage $token  -ports 587  -debug 1 -username username@gmail.com

El script está utilizando las mismas credenciales tanto en la máquina MacOS como en la máquina Windows/Activestate, pero ¿parece estar fallando la autorización? ¿Alguna otra idea?

¿Fue útil?

Solución

Parece que no estás intentando autenticarte. En usted Mac, su instalación de TCL probablemente incluye el paquete SASL de Tcllib y es posible que no lo haya incluido en su máquina Windows. No tener SASL disponible no es un error, ya que muchas personas no tienen que autenticarse, pero claramente lo requiere. Puedes usar el teacup Utilidad para agregar el paquete SASL a su instalación de ActiveTCL. teacup install SASL Deberías hacerlo. El paquete admite las mecanizaciones SASL de inicio de sesión y SASL que están bien sobre un enlace TLS.

Otros consejos

¿Bloqueado por un firewall (o un problema de conectividad general para alcanzar el puerto TCP/587 de la máquina remota)? Empezaría con

set sock [socket $that_box 587]
gets $sock

en un tclsh interactivo (TKCON es recomendado). Debe obtener la cadena "Helo" del servidor remoto en un momento razonable (puede ser un par de segundos).

Pasé varios días tratando de enviar correo electrónico a través de SMTP.GMail.com y mi intercambio local de MS usando autenticación pero sin éxito. Finalmente logré que funcionara usando el código a continuación. Este procedimiento se ejecutó desde PostgreSQL usando PLTCLU.

Espero que ayude al menos a una persona.

create or replace function pgmail(text, text, text, text,text,text,text,text) returns int4 AS $$
package require smtp
package require mime
set mailfrom $1
set mailto $2
set mailsubject $3
set body $4
set myHost $5
set myPort $6
set myUname $7
set myUpassword $8


set token [mime::initialize -canonical "text/plain" -encoding "7bit" -string $body]
          mime::setheader $token Subject $mailsubject
          smtp::sendmessage $token \
            -servers [list $myHost] -ports [list $myPort]\
            -usetls true\
            -debug true\
            -username $myUname \
            -password $myUpassword\
            -queue false\
            -atleastone true\
            -header [list From "$mailfrom"] \
            -header [list To "$mailto"] \
            -header [list Subject "$mailsubject"]\
            -header [list Date "[clock format [clock seconds]]"]
          mime::finalize $token
return 1
$$ LANGUAGE pltclu;>

EDITAR:

Asegúrese de que su cliente de correo no esté configurado para verificar el correo nuevo con demasiada frecuencia. Si su cliente de correo busca mensajes nuevos más de una vez cada 10 minutos, su cliente podría solicitar repetidamente su nombre de usuario y contraseña.

Sigue los pasos Centro de ayuda de Google y desbloquea tu gmail.

Si los problemas de apretón de manos persisten, parece ser una implementación de TCL TLS, intente actualizar y degradar el paquete, si eso no funciona, si se colocan si se colocan tclsh.exe, o la ruta de la biblioteca de TCL, son un ssleay32.dll, y cuéntame sobre eso .

Otra pregunta, ¿está utilizando una distribución X64 de Windows 7?

Esto puede deberse a la configuración de seguridad de Google. por favor vaya a "https://www.google.com/settings/security/lesssecureapps"Y asegúrate de que habilitar Acceso a aplicaciones menos seguras. Esto funcionó para mí.

Ravi.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top