Установка персонализированного тела для отправки почты в django
Я хочу отправить сообщение с персонализированной SMTP почтой в Django. Где я хочу отправить имя, email и контактную информацию с динамическим значением ввода текста.
Вот мой код
if request.method == 'POST':
name = request.POST.get('name')
email = request.POST.get('email')
contact = request.POST.get('contactnum')
textmess = request.POST.get('textarea')
allinfo = "Name : " + name, "E-Mail" + email, "Contact:" + contact, textmess
print (allinfo)
subject = 'From MBS Project(Contact Us)'
email_from = settings.EMAIL_HOST_USER
mailto:recipents_list=['abc@gmail.com']
if allinfo:
sendMail = send_mail(subject, allinfo, email_from, recipents_list)
messages.success(request, 'Message Send Successfully...')
return HttpResponseRedirect('contactus', {'sendMail': sendMail})
else:
messages.error(request, 'error during send!!, Please Try Again..')
return render(request, 'contactus.html', {})
else:
return render(request, 'contactus.html', {})
Запятые в этой строке выглядят неправильно:
allinfo = "Name : " + name, "E-Mail" + email, "Contact:" + contact, textmess
Вы можете захотеть:
allinfo = "Name: " + name + " E-Mail: " + email + "Contact: " + contact + textmess
Или лучше использовать f-строки: https://docs.python.org/3/tutorial/inputoutput.html#tut-f-strings
allinfo = f"Name: {name} E-Mail: {email} Contact: {contact} {textmess}"
Вы также можете использовать шаблоны для настройки почтовой информации.
Например, вот мой почтовый шаблон контактной формы:
{% autoescape off %}
Message from <my project> contact form:
From: {{ name }} ({{ email }})
{% if user.email %}
User: {{ user.display_name }} ({{ user.email }})
{% endif %}
{{ body }}
{% endautoescape %}
Затем я использую это при отправке письма следующим образом:
send_mail(
subject=f"CONTACT FORM: {subject}",
message=render_to_string(
template_name="project/email/contact_us_body.html",
context={
"name": from_name,
"email": from_email,
"user": user,
"body": body,
},
),
from_email=settings.DEFAULT_FROM_EMAIL,
recipient_list=[
contact_tuple[1] for contact_tuple in settings.ADMINS if contact_tuple[1] is not None
],
fail_silently=False,
)
Вы можете использовать этот шаблон для тела письма, темы или практически любого текста вообще, просто вызывая render_to_string
.