Не удалось пройти проверку SendGrid с помощью Django - PullRequest
0 голосов
/ 27 января 2019

Я сейчас читаю книгу по Django (для начинающих), и я дошел до того, что мне нужно реализовать функцию сброса пароля на тестовом веб-сайте, используя SendGrid SMTP Relay.

После создания учетной записи и начала создания SMTP-реле я приветствовал следующий экран: SendGrid SMTP instruction screen На основе этой страницы я добавил следующие строки кода в настройку .py file:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey'
EMAIL_HOST_PASSWORD = 'xxxxx' #the string which is partialy hidden under the pink square 
EMAIL_PORT = 587
EMAIL_USE_TLS = True

После запуска сайта и попытки сбросить мой пароль (пароль суперпользователя) я получаю нужное сообщение со ссылкой сброса в моей консоли, но, к сожалению, ничего не приходитмоя электронная почта.Таким образом я получаю следующее сообщение об ошибке при попытке проверить интеграцию.Error message


То, что я до сих пор пробовал:

  • Я пытался создать несколько различных ключей API, чтобы убедиться, что с ключом API все в порядке.
  • Я создал новую учетную запись SendGrid
  • Я пытался удалить EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' из файла settings.py (это только ухудшало ситуацию)

Я былпытаясь решить эту проблему в течение более одного дня, любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Ваш почтовый сервер настроен на использование консоли.Если вы просто отлаживаете, это нормально, вы можете увидеть, как электронные письма будут выглядеть в консоли, и скопировать оттуда ссылку для сброса пароля.

Если вы действительно хотите отправить электронное письмо, используйте SMTP-сервер:Установите EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'.

Но будьте осторожны, не отправляйте электронные письма на поддельные адреса, используя их, у вас возникнут проблемы, если у вас слишком много отказов в учетной записи sendgrid.

Также есливы собираетесь использовать SendGrid в производстве, использовать API вместо SMTP.django-anymail (но есть и другие пакеты) предоставляет бэкэнд для использования API.

0 голосов
/ 27 января 2019

Я бы сказал, что настройки такие, какими они должны быть, принимая во внимание, что вы, конечно, не намерены запускаться в производство без защиты вашей информации (т.е. создания переменных среды).Я полагаю, вы собираетесь сделать это , но если нет, то вы действительно должны это учитывать.

Также это ваши фактические настройки, вы должны отредактировать этот пост прямо сейчас .Они должны держаться в секрете, иначе у тебя скоро будет очень плохой день.

Учитывая природу вашей проблемы, я наполовину ожидаю, что вы не тестируете ее из среды разработки, а скорее пытаетесь запустить ее из производства.Также я подозреваю, что вы используете Pythonanywhere или Heroku с бесплатным аккаунтом.Дайте мне знать, если я все здесь не прав:)

Хитрость заключается в следующем: без кашляющих в эти 5 долларов эти два провайдера (и, как я полагаю, другие провайдеры добавляют неплохо) не позволят вам использовать sendgrid.

Если я ошибаюсь, я был бы признателен за просмотр views.py, который обрабатывает отправку электронной почты.

...