【发布时间】:2019-01-04 16:29:56
【问题描述】:
在 Windows 7 上运行并使用 PyCharm 2016.2.3,如果这很重要的话。
无论如何,我正在尝试编写一个向收件人发送电子邮件的程序,但我希望控制台提示输入密码才能登录。
听说getpass.getpass()可以用来隐藏输入。
这是我的代码:
import smtplib
import getpass
import sys
print('Starting...')
SERVER = "localhost"
FROM = "my@email.com"
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 = ["your@email.com"]
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:',但即使我将提示字符串传递给它,我也会得到相同的结果。
有什么建议吗?
编辑:代码在打印字符串后继续无限期运行,但没有其他内容出现,也没有发送电子邮件。
【问题讨论】:
-
您实际上是从 Windows 控制台启动您的 python 脚本吗?
-
做到了。现在我觉得自己像个白痴。
标签: python