Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修复AttributeError:“;“非类型”;对象没有属性“;编码";使用smtplib_Python_Python 3.x - Fatal编程技术网

Python 如何修复AttributeError:“;“非类型”;对象没有属性“;编码";使用smtplib

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)

我试图制作一个脚本,允许用户通过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'
文件“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
。看起来您实际上并没有这样传递它们。

这通常发生在您创建环境变量但忘记重新启动编辑器时。因此,简单的重启应该可以解决问题