Здравствуйте.
Пишу форму обратной связи. Форма впринципе работает в базу сохраняет сообщение,но на мыло не отправляет?
Подскажите где ошибка!
модель
from django.db import models
class MailBox(models.Model):
class Meta:
db_table = 'contact_form'
verbose_name = 'Контактная форма'
verbose_name_plural = 'Форма обратной связи'
subject = models.CharField(max_length=150, verbose_name='Имя пользователя')
sender = models.EmailField(verbose_name='E-mail - пользователя')
phone = models.CharField(max_length=15, verbose_name='Телефон')
message = models.TextField(verbose_name='Сообщение')
copy = models.BooleanField()
def __unicode__(self):
return self.subject
forms.py
from django.forms import ModelForm
from mystudio.models import MailBox
class ContactForm(ModelForm):
class Meta:
model = MailBox
fields = ['subject', 'sender', 'phone', 'message', 'copy']
views.py
def contact(reguest):
if reguest.method == 'POST':
form = ContactForm(reguest.POST)
# Если форма заполнена корректно, сохраняем все введённые пользователем значения
if form.is_valid():
subject = form.cleaned_data['subject']
sender = form.cleaned_data['sender']
phone = form.cleaned_data['phone']
message = form.cleaned_data['message']
copy = form.cleaned_data['copy']
recepients = ['myemail@mail.ru']
# Положим копию письма в базу данных
MailBox.objects.create(subject=subject, sender=sender, phone=phone, message=message, copy=copy)
# Если пользователь захотел получить копию себе, добавляем его в список получателей
if copy:
recepients.append(sender)
try:
send_mail(subject, message, phone, ['myemail@mail.ru'], recepients)
except BadHeaderError: #Защита от уязвимости
return HttpResponse('Invalid header found')
# Переходим на другую страницу, если сообщение отправлено
return HttpResponseRedirect('/mystudio/thanks/')
else:
form = ContactForm()
# Выводим форму в шаблон
return render(reguest, 'mystudio/contact.html', {'form': form})
settings.py
EMAIL_HOST = 'smtp.mail.ru'
EMAIL_HOST_USER = 'myemail@mail.ru'
EMAIL_HOST_PASSWORD = 'mypassword'
EMAIL_PORT = 465
EMAIL_USE_SSL = True
DEFAULT_FROM_EMAIL = 'myemail5@mail.ru'
Шаблон
<form id="contact-form" action="{% url 'contact' %}" method="post">
{% csrf_token %}
{{ form.non_field_errors }}
<fieldset>
<label>{{ form.subject.errors }}
<input name="subject" type="text" value="Имя" onBlur="if(this.value=='') this.value='Имя'" onFocus="if(this.value =='Имя' ) this.value=''" />
</label>
<label>{{ form.sender.errors }}
<input name="sender" type="text" value="E-mail" onBlur="if(this.value=='') this.value='E-mail'" onFocus="if(this.value =='E-mail' ) this.value=''" />
</label>
<label>{{ form.phone.errors }}
<input name="phone" type="text" value="phone" onBlur="if(this.value=='') this.value='phone'" onFocus="if(this.value =='phone' ) this.value=''" />
</label>
{{ form.message.errors }}
<textarea name="message" onBlur="if(this.value=='') this.value='Сообщение'" onFocus="if(this.value =='Сообщение' ) this.value=''">Сообщение</textarea>
{{ form.copy.errors }}
<label for="id_copy">{{ form.copy }} Отправить копию себе </label>
<div class="buttons-wrapper">
<a class="button" onClick="document.getElementById('contact-form').reset()">Очистить</a>
<a class="button" onClick="document.getElementById('contact-form').submit(type)">Отправить</a>
</div>
</fieldset>
</form>