2015-10-28 5 views
4

Я пытаюсь разобрать электронную почту с вложенными файлами в формате PDFвложений электронной почты Сохранить

def get_files(poruka): 
    pdfs = [] 
    if poruka.is_multipart(): 
     for part in poruka.get_payload(): 
      if part.get_content_type() == 'application/pdf': 
       data = part.get_payload() 
       temppdf = tempfile.NamedTemporaryFile('w+b', -1) 
       temppdf.write(base64.b64decode(data)) 
       pdfs.append(temppdf) 

    return pdfs 

Это работает, но в pdfs у меня есть экземпляры файлов. Я пытаюсь сохранить файлы с его оригинальным именем внутри папки с именем storage.

Когда я попробую open(temppdf, 'wb').write(temppdf.get_payload(decode=True)) Я получил ошибку TypeError: coercing to Unicode: need string or buffer, instance found.

Также как получить pdf-файлы [0] filename?

ответ

0

Первой проблемой является попытка открыть файл-объект, а не имя файла. Вы можете попробовать open(temppdf.name), но это может не сработать (это не гарантируется на всех платформах). Начиная с Python 2.6 вы можете указать delete=False на вызов NamedTemporaryFile, хотя, а затем открытие temppdf.name должно работать нормально.

Смежные вопросы