python - Django HTML 表单发送附件电子邮件
问题描述
使用此导入时我遇到以下问题
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)
它就可以了,但只发送文本。
解决方案
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/ 文件夹。
推荐阅读
- reactjs - (节点:15976)尝试连接到 mongodb 时出现 UnhandledPromiseRejectionWarning
- python - 使用 django 编程时如何编写表单动作
- javascript - 如何在同一页面中将我已为 JSP 标记分配动态值的 JavaScript 变量值分配论坛提交时返回 false
- laravel - Laravel mix 6 hot 和 https
- javascript - React Redux 从 Api 获取数据是 Null
- javascript - 无法在样式组件中使用 Button,这给了我错误
- r - 在ggplot2中对汇总统计值进行排序
- javascript - 如何修复数据表中的列宽
- haskell - 如何实现`stack run --file-watch`
- flutter - Flutter Web:重新加载导致导航丢失