在Heroku中使用Sendgrid为Django应用设置电子邮件

6g8kf2rb  于 2022-12-19  发布在  Go
关注(0)|答案(2)|浏览(126)

我在Heroku上部署了一个Django应用程序,并使用Sendgrid插件在用户注册网站时发送验证电子邮件。
我按照here的说明将以下内容粘贴到settings.py中:

EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'sendgrid_username'
EMAIL_HOST_PASSWORD = 'sendgrid_password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

但是,我的应用程序在注册后崩溃了。
EMAIL_HOST_USEREMAIL_HOST_PASSWORD的值应该是多少?
在heroku的sendgrid插件的开发者选项卡下,它给我的用户名是app*******@heroku.com,密码是“你的密码”,这个密码是我的Heroku密码吗?
还有,我需要在我的settings.py文件中包含DEFAULT_FROM_EMAIL吗?我在哪里告诉Sendgrid它是什么?
编辑:我已经设置了DEBUG = True,看起来错误是:

SMTPSenderRefused

(550, 'Cannot receive from specified address <info@myapp.com>: Unauthenticated senders not allowed', 'info@myapp.com')

看起来问题在SendGrid做它的事情之前就发生了。我需要以某种方式向Heroku验证电子邮件地址吗?

ldioqlga

ldioqlga1#

在您的www.example.com中settings.py包括:

import os
EMAIL_HOST_USER = os.environ['SENDGRID_USERNAME']
EMAIL_HOST= 'smtp.sendgrid.net'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_PASSWORD = os.environ['SENDGRID_PASSWORD']

编辑:将EMAIL_PASSWORD变更为EMAIL_HOST_PASSWORD,因为这是正确的拼写。

rqenqsqc

rqenqsqc2#

在这10年中,上面的答案已经过时了,Sendgrid现在使用API密钥。
https://docs.sendgrid.com/for-developers/sending-email/django

SENDGRID_API_KEY = os.getenv('SENDGRID_API_KEY')

EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey' # this is exactly the value 'apikey'
EMAIL_HOST_PASSWORD = SENDGRID_API_KEY
EMAIL_PORT = 587
EMAIL_USE_TLS = True

相关问题