这是我在settings.py文件中的属性:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'infobot9@gmail.com'
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD')
EMAIL_PORT = 587
这是我的发送电子邮件方法:
from django.core.mail import send_mail
def sendConfirmEmail(email, instance, code):
mail_subject = 'Confirmation code {}'.format(code)
message = render_to_string("msg.html", {
'user': instance,
'code': code
})
to_email = email
send_mail(mail_subject, message, 'infobot9@gmail.com', [to_email],
fail_silently=False)
我的Django电子邮件发送方法在我的本地主机上运行良好。将其部署到Heroku之后,我已允许在我的Gmail设置中从未知设备登录。 Gmail不允许服务器登录到我的帐户,并向我发送一条消息:
恶意登录尝试被阻止
infobot9@gmail.com
有人尝试使用为他们设置的密码登录到您的帐户。如果不是您,我们建议您尽快更改密码。
未知设备
4月4日,11:39
在这个地方附近:爱尔兰都柏林
176.34.163.6(IP地址)
我应该在settings.py
文件中设置其他参数还是需要更改Gmail帐户设置?
答案 0 :(得分:1)
答案 1 :(得分:1)
我敦促您不要在生产环境中使用Gmail发送电子邮件。它不是为此设计的,并且您已经发现有适当的措施来防止将其用作垃圾邮件中继。即使您发送的是合法电子邮件,Gmail也会给您带来麻烦。
请使用旨在从托管应用程序(如SendGrid或Mailgun)发送邮件的服务。这些都是listed among Heroku's addons,都有免费的入门计划。选择一个,并通过它越来越老套的指南。这样做不仅可以处理少量邮件,而且效果更好。
答案 2 :(得分:1)
如果您仍要使用Gmail,则 @Pierre Monico的答案将起作用。我只想进行编辑。在允许安全性较差的应用登录到您的帐户并显示“解锁Capatcha”后,您仍应牢记两点。 首先,请确保通过您在应用程序中用于发送电子邮件的帐户登录浏览器,以便该特定帐户和第二件事的Capatch解锁是Google仅允许 10分钟显示解锁Capatcha。因此,如果您想一次又一次地使用它,只需在浏览器中保持 Display Uncap Capatcha 页面打开并保持刷新状态即可。 另外,如果您启用了2因子身份验证,则这些步骤将不起作用。这些帐户的程序不同。
答案 3 :(得分:1)
上述答案对我不起作用。所以这就是我如何做到的。基本上,您需要配置应用密码。
开启两步验证
设置应用密码
最后,需要配置settings.py
或.env
文件(以下是env),
EMAIL_HOST_USER=your_email@gmail.com
EMAIL_HOST_PASSWORD=generated_app_password
提示
使用 python-decouple 可以更轻松地处理 .env
数据