Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 Smtplib不使用环境变量并获取AttributeError:';非类型';对象没有属性';编码';_Python_Python 3.x_Environment Variables_Smtplib - Fatal编程技术网

Python Smtplib不使用环境变量并获取AttributeError:';非类型';对象没有属性';编码';

Python Smtplib不使用环境变量并获取AttributeError:';非类型';对象没有属性';编码';,python,python-3.x,environment-variables,smtplib,Python,Python 3.x,Environment Variables,Smtplib,我曾尝试使用smtplib使用python发送电子邮件,但当我使用python dotenv隐藏用户名和密码时,电子邮件发送不起作用,我收到错误: Traceback (most recent call last): File "test.py", line 43, in <module> server.login(sender_email, password) File "/usr/lib/python3.6/smtplib.py&qu

我曾尝试使用smtplib使用python发送电子邮件,但当我使用python dotenv隐藏用户名和密码时,电子邮件发送不起作用,我收到错误:

Traceback (most recent call last):
  File "test.py", line 43, in <module>
    server.login(sender_email, password)
  File "/usr/lib/python3.6/smtplib.py", line 721, in login
    initial_response_ok=initial_response_ok)
  File "/usr/lib/python3.6/smtplib.py", line 638, in auth
    authobject(challenge).encode('ascii'), eol='')
AttributeError: 'NoneType' object has no attribute 'encode

其中一个环境变量未设置,因此一个或多个
sender\u email
password
None
。这就是为什么
authobject(挑战).encode('ascii')
引发
'NoneType'对象没有属性'encode


您声称您打印了变量,但它们不是
None
。在这种情况下,请确保不要在代码的其他地方使用
None
覆盖这些变量之一(根据stacktrace中的行号,示例中至少缺少30行代码)。

您好,感谢您的回答。我仔细检查了一遍,实际上我忘了检查我的password env变量,它原来是一个没有密码的变量。从我的项目中,我用py文件创建了一个本地文件.env,并将我的env变量保存在那里,但是当我从该本地.env文件中删除以前的一个env变量“USERNAME”时,出于某种原因,我仍然可以用py文件访问它。那么,这个env变量是否保存在我创建的本地.env文件之外的其他地方?

import smtplib, ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from dotenv import load_dotenv, find_dotenv
import os

load_dotenv(find_dotenv())

sender_email = os.getenv("MY_EMAIL")
receiver_email = os.getenv("YOUR_EMAIL")
password = os.getenv("MY_PASSWORD")

message = MIMEMultipart("alternative")