Поврежденный pdf после отправки через Gmail API

#python #email #encoding #gmail #attachment

#python #Адрес электронной почты #кодировка #gmail #вложение

Вопрос:

В настоящее время я пытаюсь отправить вложение PDF через Gmail API, но файл, который я получаю, кажется, поврежден. Вот код, который я использую для создания электронного письма.

 message_out = MIMEMultipart()
content_type, encoding = mimetypes.guess_type(attachment)
if content_type is None or encoding is not None:
    content_type = 'application/octet-stream'
main_type, sub_type = content_type.split('/', 1)  


with open(attachment, 'rb') as fp:
        msg = MIMEBase(main_type, sub_type)
        msg.set_payload(fp.read())
filename = os.path.basename(attachment)
msg.add_header('Content-Disposition', 'attachment', filename=filename)
msg.add_header('Content-Type', main_type, name=filename)
msg.add_header('Content-Transfer-Encoding', '7bit')
email.encoders.encode_base64(msg)
message_out.attach(msg)

return {'raw': base64.urlsafe_b64encode(message_out.as_bytes()).decode()}
  

Когда я пытаюсь открыть вложение, я получаю сообщение «не удалось загрузить PDF-документ». Я предполагаю, что это как-то связано с кодировкой, но я не могу понять почему, я думал, что email.encoders решит все мои проблемы. (та же проблема возникает с изображением png)

Большое тебе спасибо, Джазули

Ответ №1:

Как и ожидалось, это была проблема с кодировкой, строка

 msg.add_header('Content-Transfer-Encoding', '7bit')
  

там не должно быть