Установка персонализированного тела для отправки почты в 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.

Вернуться на верх