Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

Django форма обратной связи — не приходят сообщения на почту

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Второй день мучаюсь, облазил все возможные сайты и примеры , что находил. Но никак не работает форма обратной связи, не приходят сообщения на почту, очень прошу подскажите где ошибка и куда что дописать.

Пробовал использовать Mailgun как сервер для отправки сообщения на почту Gmail. Все тоже самое.

<!-- Contact Section -->
    <section id="contact">
        <div class="container">
            <div class="row">
                <div class="col-lg-12 text-center">
                    <h2>Contact Me</h2>
                    <hr class="star-primary">
                </div>
            </div>
            <div class="row">
                <div class="col-lg-8 col-lg-offset-2">
                    <!-- To configure the contact form email address, go to mail/contact_me.php and update the email address in the PHP file on line 19. -->
                    <!-- The form should work on most web servers, but if the form is not working you may need to configure your web server differently. -->
                    <form name="sentMessage" id="ContactForm" novalidate>
                        <form action="/contact/" method="post">{% csrf_token %}
                            {{ form.non_field_errors }}
                        <div class="row control-group">
                            <div class="form-group col-xs-12 floating-label-form-group controls">
                                <label for="id_subject">Name</label>
                                <input type="text" class="form-control" placeholder="Name" id="name" required data-validation-required-message="Please enter your name.">
                                <p class="help-block text-danger"></p>
                            </div>
                        </div>
                        <div class="row control-group">
                            <div class="form-group col-xs-12 floating-label-form-group controls">
                                <label for="id_sender">Email Address</label>
                                	  {{ form.sender.errors }}
                                    {{ form.sender }}
                                <input type="email" class="form-control" placeholder="Email Address" id="email" required data-validation-required-message="Please enter your email address.">
                                <p class="help-block text-danger"></p>
                            </div>
                        </div>
                        <div class="row control-group">
                            <div class="form-group col-xs-12 floating-label-form-group controls">
                                <label for="phone">Phone Number</label>
                                <input type="tel" class="form-control" placeholder="Phone Number" id="phone" required data-validation-required-message="Please enter your phone number.">
                                <p class="help-block text-danger"></p>
                            </div>
                        </div>
                        <div class="row control-group">
                            <div class="form-group col-xs-12 floating-label-form-group controls">
                                <label for="id_message">Message</label>
                                {{ form.message.errors }}
                              {{ form.message }}
                                <textarea rows="5" class="form-control" placeholder="Message" id="message" required data-validation-required-message="Please enter a message."></textarea>
                                <p class="help-block text-danger"></p>
                            </div>
                        </div>
                        <br>
                        <div id="success"></div>
                        <div class="row">
                            <div class="form-group col-xs-12">
                                <button type="submit" class="btn btn-success btn-lg">Send</button>
                            </div>
                        </div>
                    </form>
                    </form>
                </div>
            </div>
        </div>
    </section>

<form action="/contact/" method="post">{% csrf_token %}
    {{ form.non_field_errors }}
class ContactForm(forms.Form):
	subject = forms.CharField(max_length = 100)
	sender = forms.EmailField()
	message = forms.CharField(widget = forms.Textarea(attrs = {'class': 'form-control'}))
	copy = forms.BooleanField(required = False)

def contactView(request):
	if request.method == 'POST':
		form = ContactForm(request.POST)
		#Если форма заполнена корректно, сохраняем все введённые пользователем значения
		if form.is_valid():
			subject = form.cleaned_data['subject']
			sender = form.cleaned_data['sender']
			message = form.cleaned_data['message']
			copy = form.cleaned_data['copy']

			recipients = ['[email protected]']
			#Если пользователь захотел получить копию себе, добавляем его в список получателей
			if copy:
				recipients.append(sender)
			try:
				send_mail(subject, message, '[email protected]', recipients)
			except BadHeaderError: #Защита от уязвимости
				return HttpResponse('Invalid header found')
			#Переходим на другую страницу, если сообщение отправлено
			return render(request, 'contact.html')
	else:
		#Заполняем форму
		form = ContactForm()
	#Отправляем форму на страницу
	return render(request, 'home.html', {'form': form})
👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Как решили проблему? У меня та же проблема, вроде все работает но письмо на почту не приходит. Не могу разобраться уже второй день. Пробовал разные почтовые ящики, результат на всех один, почта не приходит!

проблема была в том что форма была для деплой сервера , почта работала через консоль

Ну у меня так и не заработала по такому принципу, сделал по другому. За подсказку спасибо!

except BadHeaderError: #Защита от уязвимости
Захист від чого? Прибери блок трай ексепт і покажи помилку, що з якою падає джанго. І блок settings.py де знаходять змінні EMAIL_*

File „C:\untitled\untitled\urls.py”, line 20, in
from test_project import views
File „C:\untitled\test_project\views.py”, line 48
return render(request, ’contact.html’)
^
SyntaxError: invalid syntax и какого то хрена подчеркивает то что закаментировано

это ошибка с эксепшеном или без него?
сам эксепшн можно оставить, только сделать его более «широким»
except Exception, err:     return HttpResponse(err)

В доке по отправке почты в джанге написано следующее
---
Mail is sent using the SMTP host and port specified in the EMAIL_HOST and EMAIL_PORT settings. The EMAIL_HOST_USER and EMAIL_HOST_PASSWORD settings, if set, are used to authenticate to the SMTP server, and the EMAIL_USE_TLS and EMAIL_USE_SSL settings control whether a secure connection is used.
---
Проверь все ли правильно сетапишь.

я читал документацию , читал много примеров , письмо не приходит на почту ,когда отправляю письмо во тчто пишет сервер 02/May/2017 15:10:18] «POST / HTTP/1.1» 200 10165 , и так же искал примеры для отправки с локального сервера ,может плохие примеры были и что то в этом вроде но все тоже самое

письмо не приходит на почту, когда отправляю письмо вот что пишет сервер
[02/May/2017 15:10:18] «POST / HTTP/1.1» 200

Это пишет WEB сервер. Пишет он о том, что успешно получил и обработал HTTP POST request. Про письмо тут нет ничего. Думаю, про письмо будет в логе SMTP сервера, а не веб =)

Еще, отправка почты срабатывает, судя по вашему коду, по uri /contact/ (кстати зачем тег form вложеный?)


< form name="sentMessage" id="ContactForm" novalidate >
< form action="/contact/" method="post" > {% csrf_token %}
...

Но POST-запрос из лога шёл на корень /
Возможно код отправки почты даже не выполнялся.

В Спаме смотрел?

а дебагати не пробував?

Підписатись на коментарі