Showkat Ali
Showkat Ali

Reputation: 45

How to fix django send mail?

I'm trying to send mail in django project for several days.I've got documentation from djangoproject.com, but that's not working for me. my settings.py contains these lines of code for sending mail:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587
EMAIL_HOST_PASSWORD = '**********' #my gmail account's password 
EMAIL_HOST_USER = '[email protected]'

my views.py contains these lines for contactform:

def contactForm(request):
    form = LocalContactForm(request.POST or None)
    if form.is_valid():
        send_mail(
'Subject here',
'Here is the message.',
settings.EMAIL_HOST_USER,
['[email protected]'],
fail_silently=False,
)
        return HttpResponseRedirect('thanks')
    context = {"page":"contact_form", "title":"Contact with us", "form":form}
    return render(request, 'form.html', context)

While I'm trying send mail via my form: It show up:

SMTPAuthenticationError at /contact/
(534, '5.7.14 <https://accounts.google.com/signin/continue?     sarp=1&scc=1&plt=AKgnsbtZ\n5.7.14 4CcZKxu-As7S5tfd-3YTAz6XMdwLYcJKWk7_bViejaO8v_-mx-aD8PLO5zixLUMbTv38LY\n5.7.14 qE3ifOl5aXJOXaOVN5jU9Tl-HJVDj1_bc0n9nJ4PHERsBsyu8L0JRr9rM3ED0TdFXLV3wl\n5.7.14 _GF3jCTuCHIydf-YXcFZidIIqrERHyAORvqYmuPs0qHd_rt3ecbJUBOIW9PvzOXxGBiXg2\n5.7.14 ehh9XhyakjWXfOEuJgbxiNBMdCIM0> 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 ao5sm46546625pad.1 - gsmtp')

Request Method:     POST
Request URL:    http://www.zellaic.com/contact/
Django Version:     1.10.1
Exception Type:     SMTPAuthenticationError
Exception Value:    

(534, '5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbtZ\n5.7.14 4CcZKxu-As7S5tfd-3YTAz6XMdwLYcJKWk7_bViejaO8v_-mx-aD8PLO5zixLUMbTv38LY\n5.7.14 qE3ifOl5aXJOXaOVN5jU9Tl-HJVDj1_bc0n9nJ4PHERsBsyu8L0JRr9rM3ED0TdFXLV3wl\n5.7.14 _GF3jCTuCHIydf-YXcFZidIIqrERHyAORvqYmuPs0qHd_rt3ecbJUBOIW9PvzOXxGBiXg2\n5.7.14 ehh9XhyakjWXfOEuJgbxiNBMdCIM0> 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 ao5sm46546625pad.1 - gsmtp')

Exception Location:     /usr/lib64/python2.7/smtplib.py in login, line    621
Python Executable:  /usr/local/bin/python
Python Version:     2.7.5
Python Path:    
['/home/showkatali/webapps/zellaic/lib/python2.7/Django-1.10.1-py2.7.egg',
'/home/showkatali/webapps/zellaic',
'/home/showkatali/webapps/zellaic/src',
'/home/showkatali/webapps/zellaic/lib/python2.7',
'/home/showkatali/lib/python2.7/pip-8.1.2-py2.7.egg',
'/home/showkatali/lib/python2.7',
'/usr/lib64/python27.zip',
'/usr/lib64/python2.7',
'/usr/lib64/python2.7/plat-linux2',
'/usr/lib64/python2.7/lib-tk',
'/usr/lib64/python2.7/lib-old',
'/usr/lib64/python2.7/lib-dynload',
'/usr/lib64/python2.7/site-packages',
'/usr/lib64/python2.7/site-packages/PIL',
'/usr/lib64/python2.7/site-packages/geos',
'/usr/lib/python2.7/site-packages']

And while I'm trying to use these lines into shell, It show up:

send_mail('subject', 'sometext', settings.EMAIL_HOST_USER,   ['[email protected]'], fail_silently = False)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/endless/Desktop/project/webfaction/env/local/lib/python2.7/site-  packages/django/core/mail/__init__.py", line 62, in send_mail
return mail.send()
File   "/home/endless/Desktop/project/webfaction/env/local/lib/python2.7/site-  packages/django/core/mail/message.py", line 342, in send
return self.get_connection(fail_silently).send_messages([self])
File  "/home/endless/Desktop/project/webfaction/env/local/lib/python2.7/site- packages/django/core/mail/backends/smtp.py", line 100, in send_messages
new_conn_created = self.open()
File   "/home/endless/Desktop/project/webfaction/env/local/lib/python2.7/site-  packages/django/core/mail/backends/smtp.py", line 67, in open
self.connection.login(self.username, self.password)

At this moment, What should I do? Need any configuration of my gmail account ?

Upvotes: 0

Views: 441

Answers (1)

serg
serg

Reputation: 111335

Here is an implementation for gmail using standard email and smtplib packages (note different port and host in settings):

//settings.py
EMAIL_HOST = 'smtp.googlemail.com' #XXX
EMAIL_PORT = 465                   #XXX
EMAIL_HOST_PASSWORD = '**********' 
EMAIL_HOST_USER = '***@gmail.com'

Code:

import smtplib

from email import encoders
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate

from django.conf import settings

#send_to is a list of recipient emails
def send_mail(send_to, subject, body):

    msg = MIMEMultipart()
    msg['From'] = settings.EMAIL_HOST_USER
    msg['To'] = COMMASPACE.join(send_to)
    msg['Date'] = formatdate(localtime = True)
    msg['Subject'] = subject

    msg.attach(MIMEText(body))

    server_ssl = smtplib.SMTP_SSL(settings.EMAIL_HOST, settings.EMAIL_PORT)
    server_ssl.ehlo()
    server_ssl.login(settings.EMAIL_HOST_USER, settings.EMAIL_HOST_PASSWORD)
    server_ssl.sendmail(settings.EMAIL_HOST_USER, send_to, msg.as_string())
    server_ssl.close()

Upvotes: 1

Related Questions