Использование Sendgrid и Azure : 550, b'Unauthenticated senders not allowed'

Я пытаюсь отправить письмо о сбросе пароля пользователям через приложение, которое мы разрабатываем на Django. При локальном использовании приложения пользователь может выбрать сброс пароля, если он забыт, ввести свой email в поле и отправить, чтобы получить письмо. Электронная почта отправителя - это адрес электронной почты предприятия. Проверяя Sendgrid, я вижу в журнале активности, что письмо было обработано и доставлено. Так что, похоже, все работает.

Однако, когда я пытаюсь сделать тот же самый переход через Github, Azure, на https://XXXXXX.azurewebsites.net/en/password_reset/, я получаю следующее :

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)
]

merci Николя

Это решено: Если SendGrid работает локально, но не работает на Azure:

В Azure выберите 'configuration', 'Application settings', 'new application settings' и затем, как показано ниже, используя правильное имя API, все заработало.

В SendGrid я назвал свой API ключ 'test', и подумал, что в Azure я должен назвать его так же. Однако я должен был назвать его так же, как в моем коде:

SENDGRID_API_KEY

Не очевидно вначале.

Вернуться на верх