Django не отправляет сообщение электронной почты с вложенным zip-файлом
Всем привет! У меня проблема с отправкой письма с помощью бэкенда Django smtp email и SendGrid. Моя задача выглядит следующим образом. Он делает партию pdf файлов с помощью pyppeteer, зипует их в архив, прикрепляет к сообщению и затем отправляет на email. Так и должно быть, но это не работает! Я проверил его с другим представлением для отправки электронной почты (немного другая логика, без zip или чего-то еще.) и он работает, но это означает, что это не проблема с sendgrid и другими вещами, такими как секретные ключи в конфигурации uwsgi.
Дело в том, что письма не застревают в списке отправителей.
Я попробовал поместить вместо pdf-файла какой-нибудь фиктивный кусочек типа pdf_file = b'some bytes'
и это сработало на моей локальной машине, но не сработало на сервере. Размер zip-архива я получил из ответа. Пожалуйста, объясните мне, где я ошибаюсь
### views.py
@csrf_exempt
@require_POST
def generate_batch_pdf(request, blueprint):
try:
payload = json.loads(request.body)
email = payload.get('email')
uuids = payload.get('uuids')
zip_buffer = io.BytesIO()
compression = zipfile.ZIP_DEFLATED
with zipfile.ZipFile(zip_buffer, 'a', compression, False) as f:
for uuid in uuids:
report_name = _report_name(uuid, blueprint)
pdf_file = async_to_sync(generate_pdf_file)(
request.get_host(),
uuid,
blueprint,
report_name,
)
f.writestr(
zinfo_or_arcname='{0}'.format(report_name),
data=pdf_file,
)
msg = EmailMessage(
subject='Отчеты Тест',
body='Архив выбранных отчетов',
from_email=settings.DEFAULT_FROM_EMAIL,
to=[email],
)
msg.attach('reports.zip', zip_buffer.getvalue(), 'application/zip')
msg.send(fail_silently=False)
return JsonResponse(
{
'msg': 'Ok',
# it's here just for check
'size': '{0}'.format(sys.getsizeof(zip_buffer)),
},
)
except Exception as e:
return JsonResponse({'msg': 'Err -> {e}'.format(e=e)})
Я использую python 3.6
### requirements.txt
django==3.1
...