Контактная форма Django отправляет письмо обратно на мой собственный адрес электронной почты
views.py
def contact(request):
if request.method == "POST":
username = request.POST['username']
phone = request.POST['phone']
customer_email = request.POST['customer_email']
subject = request.POST['subject']
message = request.POST['message']
#send Email
send_mail(subject, message, customer_email, ['myemail@gmail.com'])
return render(request, 'contact.html', {'username': username })
else:
return render(request, 'contact.html', {})
Это мой html
<form method="post" action="{% url 'contact' %}" id="contact-form">
{% csrf_token %}
<div class="row clearfix">
<div class="col-lg-6 col-md-6 col-sm-12 form-group">
<input type="text" name="username" placeholder="Name" required="">
</div>
<div class="col-lg-6 col-md-6 col-sm-12 form-group">
<input type="text" name="phone" placeholder="Phone" required="">
</div>
<div class="col-lg-6 col-md-6 col-sm-12 form-group">
<input type="email" name="customer_email" placeholder="Email" required="">
</div>
<div class="col-lg-6 col-md-6 col-sm-12 form-group">
<input type="text" name="subject" placeholder="Subject" required="">
</div>
<div class="col-lg-12 col-md-12 col-sm-12 form-group">
<textarea name="message" placeholder="Message"></textarea>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 form-group">
<button class="theme-btn btn-style-one" type="submit" name="submit-form">Submit Now</button>
</div>
</div>
</form>
Вот форма, которая должна отправить письмо на customer_email, но вместо этого я получаю письмо обратно. То есть отправитель и получатель оба одинаковые. В чем здесь проблема? Также возможно ли добавить email и номер телефона клиента в само сообщение электронной почты. Пожалуйста, помогите.
В документации для send_mail сказано:
send_mail(subject, message, from_email, recipient_list, ...)
так что когда вы звоните
send_mail(subject, message, customer_email, ['myemail@gmail.com'])
вы подключаете customer_email к from_email и ваш адрес электронной почты к recipient_list... так что да, вы получаете электронное письмо, поскольку вы говорите компьютеру сделать именно это.
Возможно:
username = request.POST['username']
phone = request.POST['phone']
customer_email = request.POST['customer_email']
subject = request.POST['subject']
message = request.POST['message']
content = f"""
{message}
Username: {username}
Phone: {phone}
Email: {customer_email}
"""
send_mail(
subject=subject,
message=content,
from_email=None, # use default sender from settings
recipient_list=[customer_email],
)
Просто будьте осторожны со спамом - открытая контактная форма, подобная этой, легко приведет к блокировке вашего адреса или сервера по всему миру, поскольку вы, по сути, позволяете любому использовать ее для отправки сообщения кому угодно.