Link Search Menu Expand Document

Отправка E-mail с сайта

Подробнее про отправку писем

В settings.py прописываем параметры доступа к SMTP:

EMAIL_HOST = 'smtp.yandex.ru'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'y4-testtest@yandex.ru'
EMAIL_HOST_PASSWORD = 'A87654321'
EMAIL_USE_TLS = False
EMAIL_USE_SSL = True

Далее в файле forms.py мы создадим форму для тестирования отправки сообщений:

class ContactForm(forms.Form):
    subject = forms.CharField(label='Тема',
                              widget=forms.TextInput(attrs={'class': "form-control", 'autocomplete': 'off'}))
    content = forms.CharField(label='Текст',
                              widget=forms.Textarea(attrs={"class": "form-control", "rows": 5}))

В файле views.py пропишем логику работы функции:

from django.core.mail import send_mail

def test(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            mail = send_mail(form.cleaned_data['subject'],
                             form.cleaned_data['content'],
                             'y4-testtest@yandex.ru',
                             ['philip-spb@ya.ru'],
                             fail_silently=True)
            if mail:
                messages.success(request, 'Письмо отправлено')
                return redirect('test')
            else:
                messages.error(request, 'Ошибка отправки')
    else:
        form = ContactForm()
    return render(request, 'news/test.html', {'form': form})

В файле urls.py укажем путь:

path('test/',test, name='test'),

В файле шаблона выедем нашу форму:

{% extends 'base.html' %}

{% block title %}
Обратная связь
{% endblock %}

{% block sidebar %}
{% include 'inc/_sidebar.html'%}
{% endblock %}
{% block content %}

<h1>Обратная связь</h1>

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="btn btn-primary btn-block">Отправить</button>
</form>

{% endblock %}