Как перебирать электронные письма и их вложения Python win32 - PullRequest
2 голосов
/ 13 марта 2019

Я пытаюсь найти все электронные письма, отправленные конкретному человеку («Эндрю» для демонстрационных целей), а затем найти в каждом письме вложение, содержащее в своем имени строку (к каждому письму добавлено несколько вложений).

Вот код:

peopleInitials = ['XXX','YYY', 'ZZZ']
checkText = 'Andrew'
listalen = len(peopleInitials)

for message in messages:
     k = 0
     currentText = message.To     
     if checkText in currentText:
          for att in message.Attachments:
               attachmentName = att.FileName
               while k < listalen:
                    if peopleInitials[k] in attachmentName:
                         print('Atachment exists')
                         print(attachmentNames)
                    else: 
                         print('Attachment does not exist')
                         print(attachmentNames)
                    k = k + 1

Он работает частично - он перебирает электронные письма, и когда находит письмо, адресованное Андрею, он проверяет, содержит ли имя вложения «XXX», «YYY» или «ZZZ». Однако он проверяет только одно вложение для каждого электронного письма и не просматривает все его вложения. Что я делаю неправильно? Большое спасибо заранее

Использование Outlook2016, Python 3.7 и win32com

1 Ответ

1 голос
/ 13 марта 2019

Оказалось, что скрипт действительно выполняет итерацию всех вложений, но после проверки первого файла

k = listalen 

, поэтому он не проверяет другие файлы.Он работает с каждым первым вложением, потому что k устанавливается в 0, когда скрипт принимает другое сообщение.Поэтому единственное, что мне нужно было сделать, это добавить:

k = 0

до:

while k < listalen:
...