使用此导入时,我遇到以下问题
from django.core.mail.message import EmailMessage
我的代码看起来像这样:
if request.method == 'POST':
email = EmailMessage()
email.subject = "Test"
email.body = mainMessage
email.from_email = "SMTP <XXX@XXX.net>"
email.to = [ "XXX@XXX.net" ]
email.attach_file(file)
email.send()
然后我用以下命令检查文件:
if 'file' in request.FILES:
file = request.FILES['file']
else:
file = False
这就是我的HTML外观
<form method="post" action="{% url 'myurl' %}" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file" required><br>
<input type="submit" name="submit" value="Submit">
</form>
如果我选择一个文件,如何使它作为附件随该电子邮件一起发送?如果我删除email.attach_file(file)
可以正常工作,但只能发送文本。
答案 0 :(得分:0)
if request.method == 'POST' and request.FILES['file']:
file = request.FILES['file']
if (str(file.content_type) == 'image/jpeg'
or str(file.content_type) == 'image/png'):
if (int(file.size) <= 5000000):
fs = FileSystemStorage()
filename = fs.save('YOUR_DIRECTORY/' + file.name, file)
email = EmailMessage()
email.subject = "XXX | Bildupload"
email.body = mainMessage
email.from_email = "SMTP <xxx@xxx.net>"
email.to = ["xxx@xxx.net"]
email.attach_file(filename)
email.send()
answer = 'Die Datei wurde erfolgreich hochgeladen'
errorAnswer = ''
return render(request, 'app/hochladen.html', {
'answer': answer
})
else:
errorAnswer = 'Der Upload hat nicht funktioniert.'
else:
errorAnswer = 'Der Upload hat nicht funktioniert.'
return render(request, 'app/hochladen.html', {
'errorAnswer': errorAnswer
})
如果有人想知道如何做,可以使用上面发布的代码。 您可以删除第二和第三个if语句,因为它们会检查大小和文件类型。
我找到的唯一答案是先将文件上传到服务器,然后从那里访问它。虽然我不知道在发送电子邮件并附加附件后如何将其删除。
您需要正确配置settings.py并添加/ media /文件夹。