在django中设置发送邮件的个性化正文



我想在Django中使用个性化的SMTP邮件发送消息。在这里,我想用动态文本输入值发送姓名、电子邮件和联系信息。

我的代码

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', {})

您也可以使用模板来配置邮件信息。

例如,下面是我的联系人表单邮件模板:

{% 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

这一行的逗号看起来不对:

allinfo = "Name : " + name, "E-Mail" + email, "Contact:" + contact, textmess

你可能想:

allinfo = "Name: " + name + " E-Mail: " + email + "Contact: " + contact + textmess

或者更好,使用f-strings: https://docs.python.org/3/tutorial/inputoutput.html#tut-f-strings

allinfo = f"Name: {name} E-Mail: {email} Contact: {contact} {textmess}"

最新更新