如果很重要,请在Windows 7上运行并使用PyCharm 2016.2.3。
无论如何,我正在尝试编写一个向收件人发送电子邮件的程序,但是我希望控制台提示输入密码以进行登录。
我听说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:'
,但即使将提示字符串传递给它,我也会得到相同的结果。有什么建议么?
编辑:代码在打印字符串后将继续无限期运行,但是没有其他任何显示,也没有电子邮件发送。
最佳答案
您遇到的问题是您是通过PyCharm启动它的,它具有自己的控制台(而不是getpass
使用的控制台)
通过命令提示符运行代码应该可以工作
关于python - Python中的getpass.getpass()函数不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40007802/