gpt4 book ai didi

Python Sendgrid 发送带有所有扩展名文件附件的电子邮件 django

转载 作者:行者123 更新时间:2023-12-05 05:37:23 24 4
gpt4 key购买 nike

我想使用 SendGrid API 和 Django 中的所有扩展来发送带有附件的电子邮件。这是我的邮件发送代码。

views.py

def submitTicket(request):
try:
if request.method == 'POST':
name = request.POST.get('name')
email = request.POST.get('email')
subject = request.POST.get('subject')
comment = request.POST.get('comment')
atchfile = request.FILES['fileinput']
allinfo = " Name : " + name + "\n E-Mail : " + email + "\n Comment : " + comment
recipients_list = ['abc@gmail.com']
if allinfo:
message = Mail(from_email='xxx@gmail.com',
to_emails=recipients_list,
subject=subject,
html_content=allinfo)

with atchfile.open() as f:
data = f.read()
f.close()
encoded_file = base64.b64encode(data).decode()
attachedFile = Attachment(
FileContent(encoded_file),
FileName(atchfile.name),
FileType(atchfile.content_type),
Disposition('attachment')
)
message.attachment = attachedFile
sg = SendGridAPIClient('0000000000000000000000000000000')
sg.send(message)

return HttpResponseRedirect('submitTicket')
except Exception as e:
print("Exception = ", e)
return render(request, 'submitTicket.html')

我在尝试执行此操作时遇到错误。

TypeError at/submitTicket 需要 str、bytes 或 os.PathLike 对象,而不是 InMemoryUploadedFile

最佳答案

我认为问题是 open 方法没有使用 InMemoryUploadedFile作为论据。它通常需要一条打开的路径。

但是,因为您的 atchfile 是一个继承自 FileInMemoryUploadedFile您实际上可以对文件本身调用 open。所以我认为你可以这样做:

            with atchfile.open() as f:
data = f.read()
f.close()

关于Python Sendgrid 发送带有所有扩展名文件附件的电子邮件 django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73121560/

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