我试图制作一个脚本,以允许用户通过gmail发送文件内容。
这是我的代码:
if input1 == 'mail':
path = input("open -- ")
with open(path, "r") as file:
addr = os.environ.get("email")
pw = os.environ.get("pass")
server = smtplib.SMTP("smtp.gmail.com", 587)
server.ehlo()
server.starttls()
server.login(addr, pw)
reading = file.read()
subject = path
body = reading
msg = f'Subject {subject}\n\n{body}'
input3 = ('recipient -- ')
server.sendmail(email, input3, msg)'
这给了我这个错误:
File "C:/Users/Whit/PycharmProjects/rps/venv/Scripts/maxnum.py", line 36, in <module>
server.login(addr, pw)
File "C:\Users\Whit\AppData\Local\Programs\Python\Python37-32\lib\smtplib.py", line 721, in login
initial_response_ok=initial_response_ok)
File "C:\Users\Whit\AppData\Local\Programs\Python\Python37-32\lib\smtplib.py", line 638, in auth
authobject(challenge).encode('ascii'), eol='')
AttributeError: 'NoneType' object has no attribute 'encode'
答案 0 :(得分:1)
您正在做server.login(addr, pw)
,但是通过环境变量获取addr
和pw
。看来您实际上并没有像这样通过他们。
答案 1 :(得分:1)
通常在创建环境变量但忘记重新启动编辑器时发生。因此,只需重新启动即可解决问题。
答案 2 :(得分:0)
您提供给smtplib
的某些值为None
。我最有可能是对getent
的一个或两个调用的结果。
如果未设置email
或pass
环境变量,您的程序应该做什么?在继续之前,您可能应该检查getent
的结果。