Отправка 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 %}