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) и повторите попытку. Второй раз сработает.