3

我想用 django 发送一封电子邮件,并且我希望body电子邮件包含.txt文件中的内容。我从我的模板中导入。我浏览了文档,但我没有找到如何去做。

这是我的views.py中的内容:

 send_mail('TEST', 'myfile.txt', 'admin@test.com', [test@test.com], fail_silently=False)

我试图添加myfile.txt到我的模板目录。但是当我用 in 替换'myfile.txt'myfile.txtsend_mail()我当然会得到一个错误,因为myfile.txt它不是一个定义的变量。关于我如何做到这一点的任何想法?

4

2 回答 2

3

你需要的是render_to_string

from django.template.loader import render_to_string
body = render_to_string('myfile.txt', foovars)
send_mail('TEST', body, 'admin@test.com', [test@test.com], fail_silently=False)

foovars如果继续进行,您需要在“模板”中呈现的值的字典在哪里myfile.txt,否则{}

确保您的myfile.txt谎言在您的模板目录上,仅此而已;-)

于 2012-12-23T18:09:29.800 回答
2

如果您希望电子邮件的正文成为myfile.txtthen 的内容(假设myfile.txt存储在media > files > myfile.txt):

from mysite.settings import MEDIA_ROOT
import os

file = open(MEDIA_ROOT + os.path.sep + 'files/myfile.txt', 'r')
content = file.read()
file.close()

# EmailMessage class version
mail = EmailMessage('subject', content, 'from@example.com', ['to@example.com'])
mail.send()

# send_mail version
send_mail('TEST', content, 'admin@test.com', [test@test.com], fail_silently=False)
于 2012-12-23T13:57:28.153 回答