Django проблемы с отправкой писем, перепробовал все, что на уме - PullRequest
0 голосов
/ 14 июля 2020

Я работаю над веб-сайтом личного портфолио, и мне нужна контактная форма, чтобы люди могли связаться со мной. Моя проблема в том, что форма не отправляет электронное письмо, когда кто-то нажимает кнопку отправки. Форма работала раньше, но затем я переместил ее в <div>, и она как-то перестала работать. Я пробовал использовать функцию django send_mail () и функцию EmailMessage, но ничего не работает. Я также разрешил незащищенные электронные письма в моей учетной записи Google. Может ли кто-нибудь помочь мне решить эту досадную проблему?

HTML

    <div class="MainContent">
            <div class="ContactForm">
                <form method="POST" action="{% url 'home' %}">
                    {% csrf_token %}
                            <input class="FormElement email" name="client_email" type="email" placeholder="Your email..." required>
                            <input class="FormElement subject" name="subject" type="text" placeholder="Subject..." required>
                            <textarea class="FormElement message" name="message" placeholder="Your message..." required>
</textarea>
                            <input class="FormElement submit" name="submit" type="submit" value="Send message">
                </form>
            </div>
        </div>

Настройки

EMAIL_HOST = 'smtp.gmail.com'

EMAIL_HOST_USER = 'my_mail@gmail.com'

EMAIL_HOST_PASSWORD = 'my_password'

EMAIL_PORT = 587

EMAIL_USE_TLS = True

EMAIL_USE_SSL = True

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

Просмотр

def contact(request):

if request.method == 'POST':
    send_mail(
        subject = request.POST['subject'],
        message = request.POST['message'],
        from_email = request.POST['client_email'],
        recipient_list = ['settings.EMAIL_HOST_USER', ],
        fail_silently = False,
    )
return render(request, 'website/contact.html')

1 Ответ

0 голосов
/ 14 июля 2020

Я столкнулся с той же проблемой. Но когда я прошел аутентификацию в send_mail, проблема была решена. Многие также рекомендуют использовать двухэтапную аутентификацию в Gmail для получения пароля приложения. Попробуйте аутентифицировать свой почтовый сервер в send_mail ():

send_mail(subject, text_content, from_email, [to], auth_user=settings.EMAIL_HOST_USER, auth_password=settings.EMAIL_HOST_PASS, html_message=html_template)
...