Как прочитать файл в моем локальном хранилище, как в памяти, и прикрепить его к электронной почте? - PullRequest
0 голосов
/ 14 декабря 2018

Этот фрагмент предназначен для создания файла 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()

Заранее спасибо.

1 Ответ

0 голосов
/ 14 декабря 2018

Я вижу, вы не хотите сохранять свой файл - только в памяти.Тогда вы можете использовать этот пример.Также вам нужно установить 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()
...