Das TCL -E -Mail -Skript liefert nicht in Activestate TCL
-
28-10-2019 - |
Frage
Ich habe das folgende Skript auf der Mac OSX -Version von TCL ausgeführt und es hat gut funktioniert, aber es hängt an Activestate TCL auf einem Windows 7 -Computer
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."
Irgendwelche Ideen, was könnte am Aktivitätssystem los sein? (Es ist eine frische Installation von Activestate, die es vor ein paar Tagen heruntergeladen hat.)
UPDATE: Ich denke, es wurde aufgrund der Corp -Firewall gefroren (ich muss mit jemandem darüber sprechen). Obwohl ich weiter durchgehen kann, wenn ich das Corp -Netzwerk nicht durchgehe, gibt es die Nachricht immer noch nicht. Ich bekomme die folgenden Debug -Info zurück:
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
Das Skript verwendet die gleichen Anmeldeinformationen sowohl auf dem MacOS -Computer als auch auf der Windows/Activestate -Maschine, aber es scheint die Autorisierung zu bestehen? Gibt es weitere Ideen?
Lösung
Es sieht so aus, als würden Sie nicht versuchen, sich zu authentifizieren. Auf Ihrem Mac enthält Ihre TCL -Installation wahrscheinlich das SASL -Paket von TCllib und Sie haben es möglicherweise nicht auf Ihrem Windows -Computer aufgenommen. Es ist kein Fehler, SASL verfügbar zu haben, da viele Menschen sich nicht authentifizieren müssen, dies jedoch eindeutig benötigt. Du kannst den ... benutzen teacup
Dienstprogramm zum Hinzufügen des SASL -Pakets zu Ihrer ActivetCl -Installation. teacup install SASL
Sollte es tun. Das Paket unterstützt die Mechanizs für Login und einfache SASL, die über einem TLS -Link in Ordnung sind.
Andere Tipps
Blockiert durch eine Firewall (oder ein allgemeines Konnektivitätsproblem mit dem Erreichen von Port TCP/587 der Remote -Maschine)? Ich würde mit
set sock [socket $that_box 587]
gets $sock
in einem interaktiven TCLSH (TKCON ist empfohlen). Sie sollten die Zeichenfolge "Helo" in einer angemessenen Zeit vom Remote -Server (möglicherweise ein paar Sekunden betragen).
Ich habe mehrere Tage damit verbracht, E -Mails über SMTP.gmail.com und meinen lokalen MS -Austausch mit Authentifizierung, jedoch ohne Erfolg, zu senden. Ich habe es endlich geschafft, es mit dem unten stehenden Code zum Laufen zu bringen. Dieses Verfahren wurde mit PLTCLU von witn postgesql ausgeführt.
Ich hoffe es hilft mindestens eine Person.
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;>
BEARBEITEN:
Stellen Sie sicher, dass Ihr E -Mail -Client nicht zu oft nach neuer Mails eingestellt ist. Wenn Ihr E -Mail -Client mehr als einmal alle 10 Minuten nach neuen Nachrichten überprüft, kann Ihr Client Ihren Benutzernamen und Ihr Passwort wiederholt anfordern.
Befolgen Sie die Schritte auf Google Help Center und schalte dein Google Mail frei.
Wenn Handshake -Probleme bestehen bleiben, scheint es die TLS -Implementierung einer TCL zu sein .
Eine andere Frage: Verwenden Sie eine X64 -Verteilung von Windows 7?
Dies kann an den Google -Sicherheitseinstellungen zurückzuführen sein. bitte gehe zu "https://www.google.com/setings/security/lesssecureApps"Und stellen Sie sicher, dass Sie Sie ermöglichen Zugang für Weniger sichere Apps. Das hat für mich funktioniert.
Ravi.