标签:python
如果重要的话,在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:’,但即使我传递了一个提示字符串,我也会得到相同的结果.
有什么建议?
编辑:代码在打印字符串后无限期地继续运行,但没有其他内容出现,也没有发送电子邮件.
解决方法:
你遇到的问题是你是通过PyCharm启动它的,它有自己的控制台(而不是getpass使用的控制台)
通过命令提示符运行代码应该工作
标签:python 来源: https://codeday.me/bug/20190724/1524287.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。