python - 如何读取本地存储中的文件(如内存中的文件)并将其附加到电子邮件中?

标签 python django file-handling django-email

此代码段用于生成 xlsx 文件,然后将该文件附加到电子邮件中 注意:我没有保存任何文件,它在内存中。

import io
a = io.BytesIO()
from django.core.mail import EmailMessage
import xlsxwriter
workbook = xlsxwriter.Workbook(a, {'in_memory': True})
worksheet_s = workbook.add_worksheet('abcd')
worksheet_s.write(0, 0, 'Hello, world!')
workbook.close()
a.seek(0)
email = EmailMessage('Subject', 'Body', 'sentby@mailinator.com', ['sentto@mailinator.com'])
email.attach('file.xlsx', a.getvalue())
email.send()

与此类似,我想将存储中的文件附加到电子邮件中,但首先想在内存中打开它。 因为我正在尝试编写一个通用代码来从一个地方发送电子邮件,无论它是否有附件(自行生成的文件或存储中的文件)。

类似这样的事情

from django.core.mail import EmailMessage
file = open('file.jpeg')
email = EmailMessage('Subject', 'Body', 'sendedby@mailinator.com', ['sentto@mailinator.com'])
email.attach(file.name, file.getvalue())
email.send()

提前致谢。

最佳答案

我发现您不想保存文件 - 只想保存在内存中。然后你就可以使用这个例子了。您还需要安装openpyxl

from openpyxl.writer.excel import save_virtual_workbook
from openpyxl import Workbook
from django.core.mail import EmailMessage
email = EmailMessage('Subject', 'Body', 'sentby@mailinator.com', ['sentto@mailinator.com'])
wb = Workbook()
ws = wb.active
ws['A1'] = 42
file = save_virtual_workbook(wb)
email.attach('file_name.xlsx', file)
email.send()

关于python - 如何读取本地存储中的文件(如内存中的文件)并将其附加到电子邮件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53774263/

相关文章:

python - 在服务器上安全地执行不受信任的Python代码

python - "Desired Capabilities must be a dictionary"将 dict 传递到参数化方法时出错

python - 使用 Python/Django 解析 Itunes 播客提要

Django 的 {{ csrf_token }} 仅输出 token 值,没有隐藏的输入标记

c++ - 在 C++ 中读取 .raw 文件

python - 以尽可能小的数量增加 float32(目前使用 numpy)

python - xml验证: validating a URI type

javascript - Angular 提前输入 : watch for dataset change

c - 在c中的文本文件中逐行文本应用二进制搜索

php - 为什么 PHP 认为它正在写入文件,但事实并非如此?