Джанго: отправить письмо через Office365 - PullRequest
1 голос
/ 09 октября 2019

Что у меня есть:

  • Домен, купленный на webs.com (назову его contoso.com);
  • Учетная запись Office 365подключен к этому домену (мой адрес электронной почты похож на john@contoso.com);
  • Приложение Django, размещенное в Azure;

Что я хочу:

Я хотел бы настроить Django для отправки электронных писем, используя мой john@contoso.com адрес.

Что я сделал:

Я пробовал это Djangoконфигурация:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.office365.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'john@contoso.com'
EMAIL_HOST_PASSWORD = 'xxxxxx'

, но это не сработало. Итак, просто для проверки я попробовал бесплатный SMTP-сервер Google:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'john@gmail.com'
EMAIL_HOST_PASSWORD = 'yyyyyy'

На этот раз он работает, но, очевидно, электронное письмо отправляется с john@gmail.com, а не с john@contoso.com.

Что не так в предыдущей конфигурации? Или, может быть, мне нужно внести некоторые изменения в свою учетную запись Office 365?


Обновление

До сих пор я пытался получать электронные письма, устанавливая переменную ADMINS в Django следующим образом:

ADMINS = [('Admin Name', 'admin@gmail.com')]

И затем я отправляю электронное письмо, используя объект регистрации:

logging.error("Hello admin!!")

Как уже говорилось, это работает только тогда, когда я использую smtp.gmail.com. Сегодня я попытался использовать функцию send_mail:

send_mail(
    'Subject here',
    'Here is the message.',
    'john@gmail.com',
    ['mail@gmail.com'],
    fail_silently=False,
)

И она работает как с использованием конфигурации smtp.gmail.com и smtp.office365.com. К сожалению, это не может быть правильным решением для меня, так как мне нужно уведомить администратора в случае ошибки или исключения. Итак, почему функция send_mail работает с smtp.office365.com, а настройка ADMIN - нет?

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Это не Django, а только подтверждение того, что SMTP-ретранслятор работает с использованием PowerShell. Убедитесь, что адрес отправителя совпадает с учетной записью, используемой для аутентификации. Также попробуйте использовать SSL и посмотрите.

https://i.imgur.com/bS04QMh.png

https://i.imgur.com/sERhkKg.png

0 голосов
/ 18 октября 2019

Для отправки электронной почты с использованием SMTP-сервера Office365 пользователь «from» и пользователь «host» должны совпадать. Поэтому я добавил этот параметр в Django, чтобы отправить электронное письмо администраторам:

SERVER_EMAIL = EMAIL_HOST_USER

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...