Django отправить почту не работает

когда представление, которое отправляет электронное письмо, используется, ничего не происходит, я затем ввел send_mail(...) в оболочку python, и он вернул 1, но я не получил никаких писем.

Это мой settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'workorbit@gmail.com'
EMAIL_HOST_PASSWORD = 'P@ssw0rd5'
EMAIL_USE_TLS = True

Это:

def send_email(request):
    send_mail('Request Callback', 'Here is the message.', 'workorbit@gmail.com',
        ['charl@byteorbit.com'], fail_silently=False)
    return HttpResponseRedirect('/')

2 ответов


изменить настройки таким образом:

DEFAULT_FROM_EMAIL = 'workorbit@gmail.com'
SERVER_EMAIL = 'workorbit@gmail.com'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'workorbit@gmail.com'
EMAIL_HOST_PASSWORD = 'P@ssw0rd5'

изменить ваш код:

from django.core.mail import EmailMessage

def send_email(request):
    msg = EmailMessage('Request Callback',
                       'Here is the message.', to=['charl@byteorbit.com'])
    msg.send()
    return HttpResponseRedirect('/')

если вы не важно предотвращение инъекции заголовка: (вы должны заботиться об этом:https://docs.djangoproject.com/es/1.9/topics/email/#preventing-header-injection, но давайте продолжим)

на settings.py:

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'user@gmail.com'
EMAIL_HOST_PASSWORD = 'pass'
EMAIL_USE_TLS = True

на views.py (пример):

from django.views.generic import View
from django.core.mail import send_mail
from django.http import HttpResponse, HttpResponseRedirect

class Contacto(View):
        def post(self, request, *args, **kwargs):
            data = request.POST
            name = data.get('name', '')
            subject = "Thanks  %s !" % (name)
            send_mail(subject, data.get('message', ''), 'user@gmail.com', [data.get('email', '')], fail_silently=False)
        return HttpResponseRedirect('/')

это опасный способ отправить электронное письмо

при первой попытке отправить письмо, вы получите письмо google советую не делать этого. Вы должны "активировать ""менее безопасные приложения" (https://www.google.com/settings/security/lesssecureapps) и повторите попытку. Второй раз сработает.