【问题标题】:How to fix AttributeError: "NoneType" object has no attribute "encode" using smtplib如何使用 smtplib 修复 AttributeError:“NoneType”对象没有属性“encode”
【发布时间】:2022-03-19 22:33:21
【问题描述】:

我尝试制作一个脚本来允许用户通过 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'

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    您正在做server.login(addr, pw),但通过环境变量获取addr 和pw。看来您实际上并没有像那样通过它们。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您提供给smtplib 的某个值是None。我很可能是对getent 的一次或两次调用的结果。

        如果未设置email 或pass 环境变量,您的程序应该做什么?在继续之前,您可能应该检查getent 的结果。

        【讨论】:

          【解决方案4】:

          检查您的环境变量是否存在 - 如果没有,请将其添加回来,因为如果没有,它会返回

          None
          

          【讨论】:

          猜你喜欢
          • 2019-04-21
          • 2021-08-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多