Django 1.8 отправка почты с использованием gmail SMTP
Я пытался отправить почту с помощью smtp.gmail.com
в django 1.8
Мои settings.py
содержат:
EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'sarath4coding'
EMAIL_HOST_PASSWORD = '*********'
DEFAULT_EMAIL_FROM = '[email protected]'
from django.core import mail
mail.send_mail('subject','message','[email protected]',['[email protected]'])
Но получил эту ошибку
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/manager/dj1.8/local/lib/python2.7/site-packages/django/core/mail/__init__.py", line 62, in send_mail
return mail.send()
File "/home/manager/dj1.8/local/lib/python2.7/site-packages/django/core/mail/message.py", line 303, in send
return self.get_connection(fail_silently).send_messages([self])
File "/home/manager/dj1.8/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 100, in send_messages
new_conn_created = self.open()
File "/home/manager/dj1.8/local/lib/python2.7/site-packages/django_smtp_ssl.py", line 14, in open
self.connection.login(self.username, self.password)
File "/usr/lib/python2.7/smtplib.py", line 622, in login
raise SMTPAuthenticationError(code, resp)
SMTPAuthenticationError: (534, '5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbuze\n5.7.14 2FDKQt2Dlo2vqFIvbr6DnBItwWvh9DChPwbeTZO66N91gzmiA437Vqs80cZ9-8u13vxq5a\n5.7.14 bVahzO_BQcZ53yKbJ-YbAlmFE1XIK7MfH97O0wI1lvzpTG_WAHuTIBF0HD1GA2icUoUemt\n5.7.14 ErZn4qb942aAIMG103FnrzLp4txXTbXC-wGLpaz5yvnUN5thahvv3-RiIVW8F1QddZKZlg\n5.7.14 qQKpqWw56zr1AcO2s_oaBEt556fQ> Please log in via your web browser and\n5.7.14 then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/answer/78754 kx14sm6579665pab.0 - gsmtp')
Я пробовал все, что говорится в документе, и следил за многими предлагаемыми решениями.
например https://accounts.google.com/DisplayUnlockCaptcha, позволяя приложениям с низкой степенью защиты и т.д.
но у меня все еще есть ошибки
Кто-нибудь может сказать, как правильно настроить Django 1.8 для отправки почты с помощью Gmail.
Ответы
Ответ 1
для меня в settings.py:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'test'
EMAIL_PORT = 587
и views.py:
from django.core.mail import EmailMessage
email = EmailMessage('title', 'body', to=[email])
email.send()
и: https://accounts.google.com/DisplayUnlockCaptcha
Ответ 2
Помните:
Перейдите в настройки учетной записи Google, найдите "Безопасность" → "Разрешения учетной записи" → "Доступ для менее безопасных приложений", включите эту опцию.
Об этой опции: https://support.google.com/accounts/answer/6010255
Ответ 3
Я тестировал это и отлично работал в django 1.8:
сначала вы должны проверить эту ссылку, предоставленную Google, которую вы сделали:)
обратите внимание, что по каким-то странным причинам, которые я не знаю, вы должны сделать код следующим образом: view.py or shell
:
import django
from django.conf import settings
from django.core.mail import send_mail
send_mail('Subject here', 'Here is the message.', settings.EMAIL_HOST_USER,
['[email protected]'], fail_silently=False)
Также это мои настройки в файле setting.py
:
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_PASSWORD = 'xxxx' #my gmail password
EMAIL_HOST_USER = '[email protected]' #my gmail username
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
Ответ 4
замените в файле settings.py:
EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'
по
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
Ответ 5
В settings.py измените это
EMAIL_HOST='imap.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD ='**********'
EMAIL_USE_SSL=False
EMAIL_USE_TLS= True
Ответ 6
Это работает для меня:
settings.py
EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_PASSWORD = 'test'
EMAIL_HOST_USER = '[email protected]'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
Разблокировать Captcha: https://accounts.google.com/DisplayUnlockCaptcha
views.py
email = EmailMessage(
'subject_message',
'content_message',
'sender smtp gmail' +'<[email protected]>',
['[email protected]'],
headers = {'Reply-To': '[email protected]' }
)
email.send()
Ответ 7
Я просто обновляю версию django до версии 2.1.3 и, наконец, работает, хотя это тоже важно: https://accounts.google.com/DisplayUnlockCaptcha, чтобы разрешить приложение без защиты
Спасибо вам всем,
Ответ 8
Я использовал это для Джанго 1.11
В settings.py
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_PASSWORD = 'sender' #sender mail password
EMAIL_HOST_USER = '[email protected]' #sender mail username
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
В view.py
send_mail('mail subject', 'body content',settings.EMAIL_HOST_USER,
['[email protected]'], fail_silently=False)
и перейдите на страницу https://myaccount.google.com/u/0/security?hl=en, чтобы включить менее безопасный доступ к приложению.