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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top