Python 发送HTML电子邮件Django 1.9
我试图创建一个联系人表单,使用send_mass_email发送HTML电子邮件回复,但我一直收到一个语法错误 我的views.py中有以下代码Python 发送HTML电子邮件Django 1.9,python,django,Python,Django,我试图创建一个联系人表单,使用send_mass_email发送HTML电子邮件回复,但我一直收到一个语法错误 我的views.py中有以下代码 def email(request, template='marketing/email.html'): form = ContactForm(request.POST or None) if form.is_valid(): subject = form.cleaned_data['subject']
def email(request, template='marketing/email.html'):
form = ContactForm(request.POST or None)
if form.is_valid():
subject = form.cleaned_data['subject']
from_email = form.cleaned_data['from_email']
message = form.cleaned_data['message']
html_content = render_to_string(
'marketing/welcome.html',
{
'message': message,
'subject': subject,
}
)
try:
message1 = (subject, message, from_email, ['test@test.com'], html_message=html_content)
message2 = (subject, message, from_email, ['test@test.com'], html_message=html_content)
send_mass_mail((message1, message2), fail_silently=False)
except BadHeaderError:
return HttpResponse('Invalid header found.')
return redirect('thanks')
context = {
"form": form,
}
return render(request, template, context)
def thanks(request):
return HttpResponse('Thank you for your message.')
我一直得到以下错误
message1 = (subject, message, from_email, ['test@test.com'], html_message=html_content)
SyntaxError: invalid syntax
发送电子邮件的最佳做法是附加HTML和纯文本版本:
msg = EmailMultiAlternatives(subject, message_plaintext, from_email, recipient_list)
msg.attach_alternative(message_html, "text/html")
然后,给定一组
EmailMultiAlternatives
实例,您可以通过连接批量发送所有实例。发送消息(messages)
-请参阅。这是最终的工作版本
# Mass Send Email function
def get_rendered_html(template_name, context={}):
html_content = render_to_string(template_name, context)
return html_content
def send_email(subject, html_content, text_content=None, from_email=None, recipients=[], attachments=[], bcc=[], cc=[]):
# send email to user with attachment
if not from_email:
from_email = settings.DEFAULT_FROM_EMAIL
if not text_content:
text_content = ''
email = EmailMultiAlternatives(
subject, text_content, from_email, recipients, bcc=bcc, cc=cc
)
email.attach_alternative(html_content, "text/html")
for attachment in attachments:
# Example: email.attach('design.png', img_data, 'image/png')
email.attach(*attachment)
email.send()
def send_mass_mail(data_list):
for data in data_list:
template = data.pop('template')
context = data.pop('context')
html_content = get_rendered_html(template, context)
data.update({'html_content': html_content})
send_email(**data)
# Contact Form
def HomePage(request, template='marketing/home.html'):
form = ContactForm(request.POST or None)
if form.is_valid():
name = form.cleaned_data['name']
from_email = form.cleaned_data['from_email']
message = form.cleaned_data['message']
phone = form.cleaned_data['phone']
# Create message1 to send to poster
message1 = {
'subject': 'Test',
'text_content': message,
'from_email': from_email,
'recipients': [from_email],
'template': "marketing/welcome.html",
'context': {"message": message,
"name": name,
"phone": phone,
}
}
# Create message1 to send to website admin
message2 = {
'subject': 'Test',
'text_content': message,
'from_email': from_email,
'recipients': ['test@test.com'],
'template': "marketing/welcome.html",
'context': {"message": message,
"name": name,
"phone": phone,
}
}
try:
send_mass_mail([message1])
except BadHeaderError:
return HttpResponse('Invalid header found.')
return redirect('thanks')
context = {
"form": form,
}
return render(request, template, context)
def thanks(request):
return HttpResponse('Thank you for your message.')
是的,这是无效的语法;元组中没有关键字参数。你想做什么?我想把welcome.html分配给html_message参数,所以当消息发送时,它使用welcome.html。在welcome.html中指定表单变量subject和message。但是元组中没有“html\u message参数”。例如,发送到
send\u mass\u mail
的元组必须只有4个参数。如果您认为传递任何元组或dict都值得推广,那么您可以提出一个问题。