Как я могу отправлять электронные письма с помощью Django на мой аккаунт gmail

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

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"

EMAIL_HOST = "smtp.gmail.com"

EMAIL_USE_TLS = True

EMAIL_PORT = 587

EMAIL_HOST_USER = "example@gmail.com"

EMAIL_HOST_PASSWORD = "password"

Ошибка, которую я всегда получаю;

SMTPConnectError at /send/
(421, b'Service not available')

Вот что появляется

Пожалуйста, как это можно исправить.

Google больше не позволяет этого делать. Вы можете проверить sendgrid или другие альтернативы.

У вас есть несколько вариантов.

Apps password smtp

В используемом вами аккаунте google включена функция 2fa, если да, то вы можете создать пароль приложения. Затем возьмите пароль приложения и используйте его вместо пароля в коде.

XOauth2 smtp

В зависимости от системы, которую вы используете для отправки электронной почты, она может поддерживать авторизацию Xoauth2. Если да, то вы можете использовать ее для отправки электронной почты через smtp-сервер.

Gmail api. Oauth2 или служебные учетные записи

Вы можете перейти на использование gmail api, если у вас есть учетная запись workspace, то вы можете использовать учетные записи служб. Если нет, то вам нужно будет придерживаться Oauth2 и авторизовать ваше приложение один раз. Это похоже на использование Xoauth2 с smtp-сервером, только вместо этого вы будете использовать gmail api.

Недавно я сделал это с помощью Google App Password. Следуйте инструкциям, чтобы получить двухэтапную верификацию, получите пароль и затем поместите его в вашу переменную EMAIL_HOST_PASSWORD с кавычками. (EMAIL_HOST_PASSWORD = 'xxxxxxxxxxxxxxxxxxxx'). Другие параметры, которые я установил, следующие:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = config('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD')
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False

Наконец, я отправляю электронные письма на моем представлении с помощью send_mail

from django.core.mail import send_mail
Вернуться на верх