Сначала добавьте конфигурацию электронной почты в settings.py:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'email@gmail.com'
EMAIL_HOST_PASSWORD = 'EMAIL_PASSWORD'
DEFAULT_FROM_EMAIL = 'webmaster@localhost'
Далее мы настроим несколько URL-адресов, которые могут быть направлены на наши представления. Обновите urls.py (импортируйте представления из любого места):
from . import views
url(r'^contact/$', views.contact, name='contact'),
url(r'^thanks/$', views.thanks, name='thanks'),
#For development
#EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Теперь нам нужно настроить сам файл form.py:
from django import forms
class ContactForm(forms.Form):
contact_name = forms.CharField(required=True, label="Name")
contact_email = forms.EmailField(required=True, label="Email")
content = forms.CharField(
required=True,
widget=forms.Textarea,
label="Message"
)
Вот полный файл views.py с пояснениями ниже:
from django.core.mail import BadHeaderError, EmailMessage
from django.shortcuts import render, redirect
from django.http import HttpResponse
from .forms import ContactForm
def contact(request):
if request.method == 'GET':
form = ContactForm()
else:
form = ContactForm(request.POST)
if form.is_valid():
contact_name = form.cleaned_data['contact_name']
contact_email = form.cleaned_data['contact_email']
content = form.cleaned_data['content']
try:
email = EmailMessage(contact_name,
content,
contact_email,
['youremail@gmail.com'], #change to your email
reply_to=[contact_email],
)
email.send()
except BadHeaderError:
return HttpResponse('Invalid header found.')
return redirect('./thanks/')
return render(request, 'home/contact.html', {'form': form})
def thanks(request):
return render(request, 'home/thanks.html', {)