使用 django 发送电子邮件模板
Posted
技术标签:
【中文标题】使用 django 发送电子邮件模板【英文标题】:sending email templates in with django 【发布时间】:2010-10-20 09:01:21 【问题描述】:我想用这样的模板发送一封电子邮件。
% extends "base.html" %
% block content %
<h2>Invoice Details</h2>
<div id="horizontalnav">
<a href="/index/add_invoice">Add an Invoice</a>
<a href="/index/work_orders">Add a Work Order</a>
<a href="/index/add_payment">Add Payment</a>
</div>
<ul STYLE="border: 1px solid;float:left;padding:15px; width: 700px;">
<h2 STYLE="text-align: right; COLOR:blue; Font-family:ARIAL">
INVOICE</h2>
<br/>
<b>company</b>
<br/>
<div id="list">
% for invoice in invoices_list %
<p style="text-align: right;">INVOICE # invoice.invoice_no<br/>
invoice.date<br/>
invoice.contract_info<br/>
% for invoice in invoice.work_orders.all %
invoice<br/>
% endfor %
% endfor %
<p style="text-align: left">
<p>To</p>
client.company<br/>
client.address<br/>
client.city<br/>
client.postcode<br/>
<p>
</div>
</ul>
% endblock %
我想发送带有 django 数据的完全 html 驱动的模板。但是我遇到了一些问题。我收到此错误。
"to" argument must be a list or tuple
我假设我对发送到电子邮件域的看法可能存在问题,但这不应该有问题。我不知何故被这个卡住了。
#views.py
@login_required
def invoice_mail(request):
t = loader.get_template('registration/email.txt')
c = Context(
'invoices_list': 'invoices_list',
'clients_list': 'clients_list',
)
send_mail('Welcome to My Project', t.render(c), 'joe@example.com', '[tom@example.com]', fail_silently=False)
【问题讨论】:
【参考方案1】:send_mail('Welcome to My Project', t.render(c), 'joe@example.com', '[tom@example.com]', fail_silently=False)
必须是
send_mail('Welcome to My Project', t.render(c), 'joe@example.com', ['tom@example.com'], fail_silently=False)
【讨论】:
【参考方案2】:错误信息相当明确。 send_mail
的 to
参数是第四个位置参数,它需要是一个列表或元组。出于某种原因,您正在传递一个字符串,字符串内有括号。
send_mail('Welcome to My Project', t.render(c), 'joe@example.com',
['tom@example.com'], fail_silently=False)
【讨论】:
【参考方案3】:'[tom@example.com]'
不是一个列表,它是一个两端都有方括号的字符串。请改用['tom@example.com']
。
【讨论】:
以上是关于使用 django 发送电子邮件模板的主要内容,如果未能解决你的问题,请参考以下文章
使用 Django 在 HTML 电子邮件模板中将图像作为内联附件发送
如何通过 django 中的contact.html 模板发送电子邮件