Как прикрепить файловый буфер к Django Mail Queue - PullRequest
0 голосов
/ 02 июля 2019

Я пытался присоединить буфер xls или буфер pdf к почтовой очереди Django, но не смог.

Я пытался использовать FileResponse или HttpResponse и конвертировать в объект файла Django, но это тоже не получается.

Вот что я пытался:

new_message = MailerMessage()
new_message.subject = "Test"
new_message.to_address = "test@gmail.com"
new_message.from_address = "noreply@gmail.com"

file_attachment = FileResponse('file_content_buffer', content_type='application/vnd.ms-excel')

new_message.add_attachment(file_attachment)     

new_message.save()

Я получилошибка: 'FileResponse' object has no attribute 'file'.Я знаю, что метод attach ожидает файловый объект, поскольку документация гласит: https://django -mail-queue.readthedocs.io / en / latest / creation.html # attachching-files .

Есть идеи?Спасибо.

Решение:
Немного взволнован, наблюдая за тем, что делает код почтовой очереди.Что вы думаете?

from mailqueue.models import MailerMessage, Attachment

new_message = MailerMessage()
new_message.subject = "Subject Mail"
new_message.to_address = 'test@gmail.com'
new_message.from_address = 'noreply@gmail.com'

new_message.save()

attachment = Attachment()
attachment.file_attachment.save('file.xlsx',ContentFile(excel_buffer),save=False)
attachment.email = new_message
attachment.original_filename = 'file.xlsx'
try:
    new_attachment.save()
except Exception as e:
    new_attachment.file_attachment.delete()

1 Ответ

0 голосов
/ 02 июля 2019

попробуйте Django версия 2.1 :

file_attachment = FileResponse(open('myfile.xls', 'rb'),as_attachment=True,'myfile.xls')

Source - официальная документация django по использованию FileResponse.

Добавление ответа для Джанго 1,9 , с использованием HTTPResponse:

file_attachment = HttpResponse('myfile.xls', content_type='application/vnd.ms-excel') 
file_attachment['Content-Disposition'] = 'attachment; filename="myfile.xls"'

Источник

...