在Django中无需EMAIL_HOST_PASSWORD即可向用户发送电子邮件

时间:2017-07-25 08:02:54

标签: django

我正在尝试发送“noreply”电子邮件来发送用户。但我不想在EMAIL_HOST_PASSWORD字段中输入密码。可能吗?我用PHP尝试了这个问题并且它取得了成功。我怎么能用Django做到这一点?

3 个答案:

答案 0 :(得分:0)

不,您不能在没有EMAIL_HOST_PASSWORD的情况下在django中发送电子邮件,因为您需要向服务器(例如:smtp服务器)进行身份验证才能成功发送电子邮件。

您可以使用env文件存储这些值并在settings.py中创建环境变量,这些变量将从env文件中获取其值。

通过这种方式,您可以在django中发送电子邮件,而无需在settings.py中提及这些值,并保持env安全且不受git(或您正在使用的任何SCM / VCS索引)。

答案 1 :(得分:0)

在终端中运行:

pip3 install python-decouple

如果您使用的是python3,但如果您使用的是python2类型,则仅使用pip而不是pip3

在django项目的根目录中创建.env文件并写下:

EMAIL_HOST_USER = 'blablabla@gmail.com'  #my email
EMAIL_HOST_PASSWORD = 'fhiahsffd'   #my password

在.gitignore中添加.env行

...
#other lines
.env
...

在settings.py中

import os
from decouple import config
...
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = config('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD')
EMAIL_USE_TLS = True
...

这样做你的电子邮件密码受到保护,这是我想象的事情

答案 2 :(得分:0)

如果在内部运行(例如从公司的服务器运行),则可以使用其SMTP服务器并发送不带密码的电子邮件。只需将EMAIL_PORT更改为所需的电子邮件端口,将EMAIL_HOST调整为公司的SMTP服务器,然后将EMAIL_HOST_USER更改为正在使用的电子邮件。