Python 如何修复AttributeError:“;“非类型”;对象没有属性“;编码";使用smtplib
我试图制作一个脚本,允许用户通过gmail发送文件内容 这是我的代码:Python 如何修复AttributeError:“;“非类型”;对象没有属性“;编码";使用smtplib,python,python-3.x,Python,Python 3.x,我试图制作一个脚本,允许用户通过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)
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'
文件“C:/Users/Whit/PycharmProjects/rps/venv/Scripts/maxnum.py”,第36行,在
服务器登录(地址,pw)
文件“C:\Users\Whit\AppData\Local\Programs\Python\Python37-32\lib\smtplib.py”,第721行,登录
初始响应(正常=初始响应(正常)
文件“C:\Users\Whit\AppData\Local\Programs\Python\Python37-32\lib\smtplib.py”,第638行,在auth中
authobject(质询).encode('ascii'),eol='')
AttributeError:“非类型”对象没有属性“encode”
您提供给smtplib
的某些值是None
。最有可能的结果是调用getent
的一个或两个调用的结果
如果未设置
电子邮件
或传递
环境变量,您的程序将执行什么操作?在继续之前,您可能应该检查getent
的结果 您正在执行server.login(addr,pw)
,但通过环境变量获取addr
和pw
。看起来您实际上并没有这样传递它们。这通常发生在您创建环境变量但忘记重新启动编辑器时。因此,简单的重启应该可以解决问题