python - 使用 Sendgrid 和 Azure:550,b'不允许未经身份验证的发件人'
问题描述
我正在尝试通过我们正在使用 Django 开发的应用程序向用户发送密码重置电子邮件。在本地尝试应用程序时,用户可以选择如果忘记重置密码,在字段中输入他的电子邮件并提交,以便接收电子邮件。发件人电子邮件是企业电子邮件地址。检查 Sendgrid,我可以看到电子邮件已被处理和传递的活动日志。所以它似乎工作。
但是,当尝试在https://XXXXXX.azurewebsites.net/en/password_reset/上通过 Github、Azure 进行相同的传递时,我得到以下信息:
SMTPSenderRefused at /en/password_reset/
(550, b'Unauthenticated senders not allowed', 'nicolas@XXXXX.com')
在日志中我也得到以下信息:
raise SMTPSenderRefused(code, resp, from_addr)
Azure有什么我缺少的东西吗,另一个要包括的关键。我通读了许多类似的问题,但找不到合适的答案来解决我的问题。这个事实Sendgrid
在本地有效,但不适用于 Azure,这让我觉得我错过了那个级别的连接。否则,在 Azure 上托管应用程序时,应用程序的所有其他方面都可以正常工作。
以下是我正在使用的代码:
在 settings.py
import os
ALLOWED_HOSTS = ['XXXXXX.azurewebsites.net']
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
SENDGRID_API_KEY = os.getenv('SENDGRID_API_KEY')
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey' #Exactly that
EMAIL_HOST_PASSWORD = SENDGRID_API_KEY
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'nicolas@XXXXX.com'
在意见中:
from django.core import mail
from django.template.loader import render_to_string
from django.utils.html import strip_tags
def send_password_reset_email(request):
subject = 'email reset'
html_message = render_to_string('password_reset_email.html', {'context': 'values'})
plain_message = strip_tags(html_message)
from_email = 'nicolas@XXXXX.com'
form = (request.POST)
if form.is_valid():
data = form.cleaned_data
to=data.get("email")
mail.send_mail(subject, plain_message, from_email, [to], html_message=html_message,fail_silently=False)
在 url.py 中:
urlpatterns=[
url('', views.send_password_reset_email)
]
谢谢尼古拉斯
解决方案
这已解决:如果 SendGrid 在本地工作,但不在 Azure 上:
在 Azure 中,选择“配置”、“应用程序设置”、“新应用程序设置”,然后如下所示,使用正确的 API 名称使其工作。
在 SendGrid 中,我将我的 API 密钥命名为“test”,并认为在 Azure 中我应该将其命名为相同。但是,我应该将其命名为与我的代码中相同的名称:
SENDGRID_API_KEY
一开始并不明显。
推荐阅读
- python - 从 PyCharm 运行 modin.pandas 时无法连接到 Redis
- angular - 如何在通过 UI 登录到 API 期间处理发布用户信用
- erlang - 如何修复 Erlang 中算术方程的 3 个输入的异常错误?
- sql - 过滤 CTE 的结果以最终在 SQL 报告中结束
- nginx - nginx proxy_pass 在 url 中重写不保留原始路径
- php - 带有 PHP Curl 的 WordPress JSON API AUTH
- pandas - 从日期创建数据框时出现问题
- reactjs - 可以从 React Hook 调用中解构结果吗?
- spring - 如何将石英作业分配给用户和类别?
- python - XLSXWriter 格式化多行