3

次のスクリプトをMACOSXバージョンのTCLで実行しましたが、正常に動作しましたが、Windows7マシンのActiveStateTCLでハングします。

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."

Activestateシステムで何が間違っている可能性があるかについてのアイデアはありますか?(これはActivestateの新規インストールであり、数日前にダウンロードしました。)

更新:企業のファイアウォールが原因でフリーズしたと思います(それについては誰かに相談する必要があります)。ただし、企業のネットワークを経由しない場合はさらに遠くまで行くことができますが、それでもメッセージは配信されません。次のデバッグ情報が返されます。

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

スクリプトはMacOSマシンとWindows/Activestateマシンの両方で同じクレデンシャルを使用していますが、認証に失敗しているようです。他にアイデアはありますか?

4

5 に答える 5

3

ファイアウォールによってブロックされていますか(またはリモートマシンのポートtcp / 587に到達する際の一般的な接続の問題)?私はから始めます

set sock [socket $that_box 587]
gets $sock

インタラクティブなtclshで(tkconをお勧めします)。妥当な時間(数秒かかる場合があります)でリモートサーバーから「HELO」文字列を取得する必要があります。

于 2011-09-09T00:56:06.533 に答える
2

認証を試みていないようです。Macでは、TclインストールにTcllibのSASLパッケージが含まれている可能性があり、Windowsマシンに含まれていない可能性があります。多くの人が認証する必要がないので、SASLが利用できないことはエラーではありませんが、明らかにそれが必要です。ユーティリティを使用してteacup、SASLパッケージをActiveTclインストールに追加できます。teacup install SASLそれをする必要があります。このパッケージは、TLSリンクを介して正常に機能するLOGINおよびPLAINSASLメカニズムをサポートします。

于 2011-09-22T11:03:18.677 に答える
2

認証を使用してsmtp.gmail.comとローカルのMSExchangeの両方を介して電子メールを送信しようとして数日を費やしましたが、成功しませんでした。私はついに以下のコードを使用してそれを動作させることができました。この手順は、pltcluを使用してPostgreSQLから実行されました。

私はそれが少なくとも一人の人に役立つことを願っています。

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;>
于 2012-09-13T11:32:25.033 に答える
0

編集:

メールクライアントが新着メールを頻繁にチェックするように設定されていないことを確認してください。メールクライアントが10分ごとに2回以上新しいメッセージをチェックする場合、クライアントはユーザー名とパスワードを繰り返し要求する可能性があります。

Googleヘルプセンターの手順に従って、Gmailのロックを解除します。

ハンドシェイクの問題が続く場合は、TclのTLS実装がパッケージのアップグレードとダウングレードを試みているようです。それが機能しない場合は、tclsh.exeが配置されている場所、またはtclのライブラリパスがssleay32.dllであるかどうかを確認し、それについて教えてください。 。

別の質問ですが、Windows 7のx64ディストリビューションを使用していますか?

于 2011-09-23T15:11:59.270 に答える
0

これは、Googleのセキュリティ設定が原因である可能性があります。「https://www.google.com/settings/security/lesssecureapps 」にアクセスし、安全性の低いアプリに対してAccessが有効になっていることを確認してください。これは私のために働いた。

ラビ。

于 2014-11-07T10:24:23.613 に答える