用django发送电子邮件模板

问题描述:

我想用这样的模板发送电子邮件。用django发送电子邮件模板

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

我想发送完全由html供电的模板,使用django数据。但是我有一些问题。我收到这个错误。

"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), '[email protected]', '[[email protected]]', fail_silently=False) 

send_mail('Welcome to My Project', t.render(c), '[email protected]', '[[email protected]]', fail_silently=False) 

必须是

send_mail('Welcome to My Project', t.render(c), '[email protected]', ['[email protected]'], fail_silently=False) 

错误消息非常明确。作为第四位置参数的send_mail的参数to需要是列表或元组。由于某种原因,您正在传递一个字符串,并在字符串中包含括号。

send_mail('Welcome to My Project', t.render(c), '[email protected]', 
      ['[email protected]'], fail_silently=False) 

'[[email protected]]'不是列表,它是用方括号在每个端部的字符串。改为尝试['[email protected]']

+0

唉!这么粗心! – Shehzad009 2010-10-20 09:10:42