长时间的爬虫,第一次打来。 我试图创建和使用environ var从settings.py文件发送gmail(smtp),但是显然我做错了,因为当我输入密码时它起作用了,但是当我使用os.environ.get隐藏时密码。
我认为我没有正确地调用环境变量,但是我没有头绪!我收到验证错误
import os
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'xxxx----@gmail.com'
EMAIL_HOST_PASSWORD = 'Thisworkedfine'
但是当我使用它时,在系统属性中定义了“ EMAIL_USER”和“ EMAIL_PASS”后,该方法不起作用。
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = os.environ.get('EMAIL_USER')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASS')
来自地狱的错误:
SMTPSenderRefused at /password-reset/
(530, b'5.5.1 Authentication Required. Learn more at\n5.5.1 https://support.google.com/mail/?p=WantAuthError c2sm2597974pjs.13 - gsmtp', 'webmaster@localhost')
帮助!
答案 0 :(得分:1)
一种方法是在另一个python文件中设置变量,然后导入该文件。
创建一个文件,例如myEnvVal.py
import os
# Set environment variables
def setVar():
os.environ['EMAIL_USER'] = 'xxxx----@gmail.com'
os.environ['EMAIL_PASSWORD'] = 'Thisworkedfine'
现在导入该文件
import os
import myEnvVal
myEnvVal.setVar()
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = os.environ.get('EMAIL_USER')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASS')
答案 1 :(得分:1)
我强烈建议将dotenv模块用于python,我个人认为这是处理环境变量的最轻松的方法。
将所有环境变量都保存在只是键值对的.env文件中。 因此,您的.env文件的内容如下所示:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'xxxx----@gmail.com'
EMAIL_HOST_PASSWORD = 'Thisworkedfine'
然后在您要使用envar的任何python文件中执行以下操作:
import os
from dotenv import load_dotenv
EMAIL_BACKEND = os.getenv('EMAIL_BACKEND')
然后只需确保将.env包含在.gitignore中,以使您的秘密始终位于本地。
有关更多信息,请查看dotenv github repo here
答案 2 :(得分:0)
在另一个文件(类似于 envvar.py)中创建两个变量。一个用于电子邮件,一个用于密码:
email = "me@something.com"
password = "somepassword"
然后在您的设置文件中:
import envvar
EMAIL_HOST_USER = envvar.email
EMAIL_HOST_PASSWORD = envvar.password
然后将 envvar 添加到您的 gitignore