我想发送一封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
不是已定义的变量。关于如何实现这一点的任何想法?
答案 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)