Search code examples
smtptclactivestate

TCL Email Script doesn't deliver in Activestate TCL


I ran the following script on the MAC OSX version of TCL and it worked fine however it hangs on ActiveState TCL on a Windows 7 machine

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 [email protected] \
                    -password myPassword \
                    -recipients $recipient -servers $email_server
          mime::finalize $token
}

send_simple_message [email protected] smtp.gmail.com \
    "This is the subject." "This is the message."

Any ideas what could be wrong on the Activestate system? (It's a fresh install of Activestate, downloaded it a couple days ago.)

UPDATE: I think it was freezing due to the corp firewall (I'll have to talk to someone about that.) HOWEVER While I can get farther when not going through the corp network it still doesn't deliver the message. I get the following debug info back:

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 [email protected]

The script is using the same credentials on both the MacOS machine and the Windows/Activestate machine, but it seem to be failing authorization? Any further ideas?


Solution

  • It looks like you are not attempting to authenticate. On you Mac, your Tcl installation probably includes the SASL package from Tcllib and you may not have included it on your Windows machine. Not having SASL available is not an error as many people do not have to authenticate but you clearly require it. You can use the teacup utility to add the SASL package to your ActiveTcl install. teacup install SASL should do it. The package supports the LOGIN and PLAIN SASL mechanizms which are fine over a TLS link.