@azhlbn

Как отправить контактную форму на email?

Сделал контактную форму, вроде бы, все работает, в консоли получаю нужную форму, но на почту она не приходит. Пробовал с разными почтовым ящиками: яндекс, gmail.

Для gmail в settings.py:

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

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'test@gmail.com'
EMAIL_HOST_PASSWORD = 'test'
DEFAULT_FROM_EMAIL = 'test.ru'
DEFAULT_TO_EMAIL = 'mail@test.ru'

Пробовал DisplayUnlockCaptcha для gmail - не помогло. Может нужно как-то настроить свой почтовый ящик?

views.py
def emailView(request):
    if request.method == 'GET':
        form = SignupForm()
    else:
        form = SignupForm(request.POST)
        if form.is_valid():
            email_subject = 'test.RU :: Запись на занятие '
            email_body = "С сайта test.ru отправлено новое сообщение\n\n" \
                         "Имя отправителя: %s \n" \
                         "Фамилия отправителя: %s \n" \
                         "Контактный телефон: %s \n" \
                         "Фамилия и имя ребенка: %s \n" \
                         "Возраст ребенка: %s \n" \
                         "E-mail отправителя: %s \n\n" \
                         "Дополнительно: \n" \
                         "%s " % \
                         (form.cleaned_data['name'], form.cleaned_data['surname'], form.cleaned_data['tel'], form.cleaned_data['kid_name'], form.cleaned_data['kid_age'], form.cleaned_data['email'],  form.cleaned_data['message'])

            # Положим копию письма в базу данных
            SignupModel.objects.create(name=form.cleaned_data['name'], surname=form.cleaned_data['surname'], tel=form.cleaned_data['tel'], kid_name=form.cleaned_data['kid_name'], kid_age=form.cleaned_data['kid_age'], email=form.cleaned_data['email'], message=form.cleaned_data['message'])


        try:
            send_mail(email_subject, email_body, settings.EMAIL_HOST_USER, ['test@gmail.com'], fail_silently=False)
        except BadHeaderError:
            return HttpResponse('Invalid header found.')
        return redirect('signup_thx')
    return render(request, 'signup/signup.html', {'form': form})

def successView(request):
    return render(request, 'signup/signup_thx.html')
  • Вопрос задан
  • 485 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Чтобы отправлять почту через smtp.gmail.com нужны учетные данные не от обычного ящийка, а от G Suite

Возможно проще будет использовать smtp вашего хостера или провайдера.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
яндекс

login = 'login_without_DOG'
password = 'password_as_is'
host = 'smtp.yandex.com'
port = 465

gmail (без GSuite)
login = 'login_with_DOG@gmail.com'
password = 'password_for_application_if_two_faktor_enbaled'
host = 'smtp.gmail.com'
port = 587
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы