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

Posted

技术标签:

【中文标题】在 Heroku 中使用 Sendgrid 为 Django 应用程序设置电子邮件【英文标题】:Setting up email with Sendgrid in Heroku for a Django App 【发布时间】:2012-04-01 04:23:47 【问题描述】:

我正在 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 验证电子邮件地址?

【问题讨论】:

【参考方案1】:

在您的 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,因为这是正确的拼写。

【讨论】:

我已经进行了更改,但仍然出现错误。我设置debug = true,错误是SMTPSenderRefused,说它无法从指定地址接收:不允许未经身份验证的发件人。在 Heroku 中哪里可以验证电子邮件? 好吧,其实这就是答案,但应该是“EMAIL_HOST_PASSWORD”而不是“EMAIL_PASSWORD”

以上是关于在 Heroku 中使用 Sendgrid 为 Django 应用程序设置电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 中的 Sendgrid / 电子邮件发送问题(托管在 Heroku 上)

Rails - SendGrid - 无效响应错误

Rails 3.2 电子邮件在被 Sendgrid 处理之前延迟了 11 分钟

Sendgrid 中的替换令牌列表

Sendgrid - SMTP 还是 CURL?

如何在 Postman 中使用 SendGrid 的 Inbound Parse Webhook 示例?