2016-10-12 18 views
2

Windows 7で動作し、PyCharm 2016.2.3を使用している場合は問題ありません。Pythonのgetpass.getpass()関数が機能していませんか?

とにかく、受信者に電子メールを送信するプログラムを作成しようとしていますが、コンソールにログインするためのパスワードを要求します。

入力を隠すのにgetpass.getpass()が使用できると聞きました。ここで

は私のコードです:

import smtplib 
import getpass 

import sys 

print('Starting...') 

SERVER = "localhost" 
FROM = "[email protected]" 

while True: 
    password = getpass.getpass() 
    try: 
     smtpObj = smtplib.SMTP(SERVER) 
     smtpObj.login(FROM, password) 
     break 
    except smtplib.SMTPAuthenticationError: 
     print("Wrong Username/Password.") 
    except ConnectionRefusedError: 
     print("Connection refused.") 
     sys.exit() 

TO = ["[email protected]"] 
SUBJECT = "Hello!" 
TEXT = "msg text" 

message = """\ 
From: %s 
To: %s 
Subject: %s 

%s 
""" % (FROM, ", ".join(TO), SUBJECT, TEXT) 

smtpObj.sendmail(FROM, TO, message) 
smtpObj.close() 
print("Successfully sent email") 

しかし、私は自分のコードを実行すると、ここに出力されます:

Starting... 
/Nothing else appears/ 

私はgetpass()のデフォルトのプロンプトは'Password:'である知っているが、私は同じ結果を得ますプロンプト文字列を渡しても。

提案がありますか?

EDIT:コードは文字列を印刷した後も無期限に実行されますが、それ以外のメッセージは表示されず、電子メールは送信されません。

+1

を動作するはずコマンドプロンプト経由でコードを実行する

ありPyCharm、経由で起動しているということです実際にWindowsコンソールからPythonスクリプトを起動しますか? – pvg

+0

それはそうしました。今私は馬鹿のように感じる。 – TheDude

答えて

5

あなたが持っている問題は、それが自身のコンソールだ(とgetpassで使用するコンソールではありません)あなたは

+2

PyCharmコンソールで実行できる 'getpass()'がありますか? – TheDude

+1

私が知っていることはありません。また、PyCharmのデバッグモードでスクリプトを実行することもできます(これはマシン上で動作しましたが、必ずしもそうではないという報告がありました) – UnholySheep

関連する問題