使用send_mail发送.text。 Django的

时间:2012-12-23 13:49:56

标签: django email

我想发送一封django的电子邮件,我希望body的电子邮件包含来自.txt文件的内容。我从我的模板导入。我经历了docs,但我没有找到怎么做。

以下是我在views.py中的内容:

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

我尝试将myfile.txt添加到我的模板目录中。但是当我在'myfile.txt'中将myfile.txt替换为send_mail()时,我当然会收到错误,因为myfile.txt不是已定义的变量。关于如何实现这一点的任何想法?

2 个答案:

答案 0 :(得分: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是一个dict,其中包含您需要在“模板”myfile.txt中呈现的值,如果继续,那么{}

确保您的myfile.txt位于模板目录中,即全部; - )

答案 1 :(得分:2)

如果您希望自己的电子邮件正文为myfile.txt的内容,那么(假设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)