Как я могу отправлять электронные письма с помощью 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