Извлечение вложения Outlook из сохраненной электронной почты - PullRequest
0 голосов
/ 07 июня 2018

У меня есть аналитический проект, который требует, чтобы я извлек «текущее состояние» PDF-файла, в котором находится наш отчет, который отправляется 4 раза в день.У меня есть код, написанный для очистки моего PDF, но мне нужно выяснить, как извлечь PDF из электронного письма, чтобы я мог просмотреть его с помощью своего кода.

Я попытался использовать код ниже

import win32com.client
import os

location = r'C:\Users\myusername\OneDrive - companyinfo\Department Projects\TestEmails'

files = [f for f in os.listdir(location)]
print(files)

for file in files:
    if file.endswith('.msg'):
        outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
        msg = outlook.OpenSharedItem(file)
        att = msg.Attachments
        for i in att:
            i.SaveAsFil`e(os.path.join(r'C:\Users\username\OneDrive - companyname\Department Projects\TestPDF', i.FileName))

Ошибка, которую он выдает:

pywintypes.com_error: (-2147352567, 'Exception occurred.', (4096, u'Microsoft Outlook', u"We can't open 'Stats Report.msg'. It's possible the file is already open, or you don't have permission to open it.\n\nTo check your permissions, right-click the file folder, then click Properties.", None, 0, -2147287038), None)

В настоящее время я тестирую только один сохраненный файл test.msg, но у меня более 1400, мне нужно проанализировать.Возможно, это не самый лучший метод, так как я знаю, что VBA может сделать что-то похожее в Outlook, но у меня нет особых навыков в регионе VBA.

У меня установлен Outlook 2016 на компьютере под управлением Windows 7 под управлением Python 2.7.,Эту ошибку легко исправить?Есть ли лучший способ взять вложенный PDF-файл и сохранить его в папке, чтобы моя другая программа могла получить необходимые данные?

Желаемый вывод: вложение в формате PDF извлекается и сохраняется в отдельной папке.

Спасибо за вашу помощь и опыт,

Энди

1 Ответ

0 голосов
/ 07 июня 2018

Итак, я разобрался с ответом, и насколько он прост и глуп, что делает меня неоправданно разочарованным .....

Моя рабочая папка была неправильной, хотя я взял файл, имя файла было единственнымсоздал.

Я создал переменную true_location, которая дала ему истинно полный рабочий каталог, и он работал как шарм.

true_location = location + '\\' + file

Введите это в цикл for в предложении if, и он работаеткак шарм.

Бест,

Энди

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...