如何解决Django 电子邮件模板呈现为文本
我正在尝试通过 SendGrid API 使用 Django 动态电子邮件模板。我知道已经有一些线程与此相关,但是,我无法使这些线程正常工作。
我有一个基本模板,其中包含一些基于搜索的动态变量,我希望通过电子邮件将这些变量发送给用户。尽管应用了我在许多其他线程中看到的内容,但 HTML 总是在文本中呈现,这一切都是有效的。
非常感谢这里的任何帮助。
Views.py
def customer_selections_sent(request):
#make=request.POST['makeselection']
if request.method == 'GET':
current_site = get_current_site(request)
emailto = request.user.email_user
user = request.user.username
#call session values from SearchInventory function
modelvalue =request.session.get('modelvalue')
makevalue =request.session.get('makevalue')
subject = 'ShowVroom Selections'
#create variables to be used in the email template
Email_Vars = {
'user': user,'make': makevalue,'model': modelvalue,'domain': current_site.domain,}
#create the email msg
message = get_template('customer_selections_email.html').render(Email_Vars)
html_message = get_template('customer_selections_email.html').render(Email_Vars)
message.content_subtype = "html" # Main content is Now text/html
#send email
request.user.email_user(subject,message)
#request.user.email_user(subject,html_message)
#return redirect('customer_selections_sent')
return render(
request,'customer_selections_sent.html',{
'title':'Deals are on the way','body':'We will email you shortly with more detail on your choices,you can respond to the dealers via the app until you agree to a viewing,test or purchase ','year':datetime.Now().year,}
)
send_mail(subject,message,'Abc@xyz.org',emailto,fail_silently=False,html_message=html_message)
sg = SendGridapiclient(os.environ.get('SENDGRID_API_KEY'))
response = sg.send(message)
#log respon
print(response.status_code)
print(response.body)
print(response.headers)
HTML 模板
<!DOCTYPE html>
<html lang="en">
{% load static %}
<head>
<Meta charset="UTF-8" />
<Meta name="viewport" content="width=device-width,initial-scale=1.0" />
<title>Your ShowVroom Selections</title>
<img align="left" src="logo1.png" alt="ShowVroom">
</head>
<body>
Hi {{ user }},Here are your search selections;
<Strong>
<br>Make; {{make}} </br>
<br>Model; {{model}} </br>
</Strong>
</body>
<foot>
<a href = "mailto:info@showvroom.ie?subject = Offer&body = Message">
Contact ShowVroom
</a>
</foot>
</html>
更新的 VIEWS.PY
def customer_selections_sent(request):
if request.method == 'GET':
#User variables
emailto = request.user.email_user
user = request.user.username
#call session values from another function
modelvalue =request.session.get('modelvalue')
makevalue =request.session.get('makevalue')
subject = 'ShowVroom Selections'
#create variables to be used in the email template
Email_Vars = {
'user': user,#'offer': displayInventory.GaragePrice,}
#create the email msg
message = get_template('customer_selections_email.html').render(Email_Vars)
html_message = get_template('customer_selections_email.html').render(Email_Vars)
message.content_subtype = "html" # Main content is Now text/html
#Redirect to sent email Webpage
request.user.email_user(subject,message)
return render(
request,{
'title':'Deals are on the way',}
)
#send email
send_mail(subject,'email@domain.com',html_message=html_message)
sg = SendGridapiclient(os.environ.get('SENDGRID_API_KEY'))
response = sg.send(message)
#log responses
print(response.status_code)
print(response.body)
print(response.headers)
解决方法
您需要为 html_message
parameter to the send_email function. 提供一个值,正如您所发现的,message
是电子邮件文本版本的值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。