2015-07-09 26 views
17

Stavo cercando inviare una mail utilizzando smtp.gmail.com in Django 1.8Django 1.8 invio di mail utilizzando SMTP di Gmail

mio settings.py contiene:

EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'sarath4coding'
EMAIL_HOST_PASSWORD = '*********'
DEFAULT_EMAIL_FROM = 'sa [email protected]'

from django.core import mail 
mail.send_mail('subject','message','[email protected]',['[email protected]']) 

ma ho ottenuto questo errore

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') 

Ho provato di tutto dice il documento e seguii molte soluzioni suggerite.

come https://accounts.google.com/DisplayUnlockCaptcha, che permettono applicazioni a bassa sicurezza, ecc

ma ho ancora ricevuto errori

Qualcuno può dire, come configurare correttamente Django 1.8 per inviare la posta tramite Gmail.

+0

ho avuto una configurazione simile, ma con: 'EMAIL_HOST_USER = 'sarath4coding @ gmail.com'' e' EMAIL_PORT = 587' e 'EMAIL_USE_TLS = true' – Gocht

risposta

5

sostituire nel file settings.py:

EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend' 

da

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

26

per me in settings.py:

EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'test' 
EMAIL_PORT = 587 

e views.py:

from django.core.mail import EmailMessage 

email = EmailMessage('title', 'body', to=[email]) 
email.send() 

e: https://accounts.google.com/DisplayUnlockCaptcha

1

Questo funziona per me:

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 

Unlock 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

Ho provato questo e ha funzionato perfettamente in django 1.8:
prima si dovrebbe verificare this link, fornito da Google, che hai fatto :)
preavviso che per alcuni strani motivi che non conosco, è necessario il codice come questo in 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) 

anche questo è il mio impostazioni nel file di 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 
15

Ricordarsi di:

Vai al tuo Google Impostazioni account, trova Sicurezza -> Autorizzazioni account -> Accesso per app meno sicure, attiva questa opzione.

A proposito di questa opzione: https://support.google.com/accounts/answer/6010255

+2

forse una scelta più sicura è per aggiungere una password specifica per l'app: https://security.google.com/settings/u/1/security/apppasswords – ptim

+0

Link non funzionante @ptim :( –

+0

tx @ Vini.g.fer! Questa pagina di aiuto spiega il processo: https://support.google.com/accounts/answer/185833?hl=en – ptim