gpt4 book ai didi

django - 在Django中,如何将已上传到内存中的文件保存为邮件附件?

转载 作者:行者123 更新时间:2023-12-04 14:25:12 25 4
gpt4 key购买 nike

我正在为我们的客户构建一个电子邮件网关,并且需要能够将他们上传的文件附加到电子邮件中。我正在使用 EmailMultiAlternatives 发送电子邮件,并使用 FileField 进行上传。当我尝试连接两者时出现问题。在我看来有以下逻辑。

if request.method == 'POST':
form = MyForm(request.POST, request.FILES)
if form.is_valid():
...
email = EmailMultiAlternatives(...)
email.attach(request.FILES['image'])
else:
form = MyForm()

这会导致“未提供异常消息”和调试中的以下值:

content: None
filename: <InMemoryUploadedFile: ImageFile.png (image/png)>
mimetype: None

所以看起来由于某种原因,没有文件内容。不确定这里发生了什么。文档中的示例将文件保存到模型,但没有模型将文件保存到此处。理想情况下,我只想将文件内容直接传递给附加方法并继续发送。关于如何使这项工作有任何想法吗?

最佳答案

看起来我比我原先想象的要近。以下是诀窍。

import mimetypes
from django.core.mail import EmailMultiAlternatives

if request.method == 'POST':
form = MyForm(request.POST, request.FILES)
if form.is_valid():
...
file = request.FILES['image']
email = EmailMultiAlternatives(...)
email.attach(file.name, file.file.getvalue(), mimetypes.guess_type(file.name)[0])
else:
form = MyForm()

这利用了 second method of file attachment在 Django 文档中,而我最初尝试的是第一个。

关于django - 在Django中,如何将已上传到内存中的文件保存为邮件附件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47205196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com