Загрузить вложение из Outlook с помощью Python

Я пытаюсь загрузить вложения из Outlook с помощью Python, на данный момент я могу загружать вложения по строке темы, но в моем случае я хочу загрузить несколько вложений из нескольких писем, где строка темы начинается с некоторой строки, например: Вот такие темы: запрос 123654, запрос 56975, запрос 5698, и я хочу загрузить их все, у которых имя темы начинается с «Запрос». Мой текущий код ниже:

from win32com.client import Dispatch
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder("6")
all_inbox = inbox.Items
val_date = datetime.date.today()

sub_today = 'Query 123654'
att_today = ''
for msg in all_inbox:
    if msg.Subject == sub_today and msg.Senton.date() == val_date:
        break

for att in msg.Attachments:
    if att.FileName == att_today:
        break

try:
    att.SaveAsFile('C:\\Offline Feeds\\Attachments' + '\\'+ att.FileName)
    messagebox.showinfo("SUCCESSFUL","Attachments Downloaded")
except:
    messagebox.showerror("ERROR","Attachment Download Failed")
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
5 460
1

Ответы 1

Вы можете использовать find () для поиска определенных данных.

sub_today = 'Query'

if msg.Subject.find(sub_today) != -1 break

Если тема не включает «Запрос», она вернет «-1».

Это полный код:

from win32com.client import Dispatch
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder("6")
all_inbox = inbox.Items
val_date = datetime.date.today()

sub_today = 'Query'
att_today = ''
for msg in all_inbox:
    if msg.Subject.find(sub_today) != -1 and msg.Senton.date() == val_date:
        break

for att in msg.Attachments:
    if att.FileName == att_today:
        break

try:
    att.SaveAsFile('C:\\Offline Feeds\\Attachments' + '\\'+ att.FileName)
    messagebox.showinfo("SUCCESSFUL","Attachments Downloaded")
except:
    messagebox.showerror("ERROR","Attachment Download Failed")

Для получения дополнительной информации перейдите по этой ссылке:

Метод Python String find ()

спасибо за модификацию @Alina Li, но если msg.Subject.find (sub_today)! = -1 и msg.Senton.date () == val_date: не работает должным образом (вместо этого загружаются все вложения, начинающиеся с 'Query') это только загрузка вложения электронного письма, которое было отправлено первым из нескольких писем.

Ribhujeet Das 26.10.2018 17:07

Вы можете попробовать search_result = msg.Subject.find (sub_today), если msg.Senton.date () == val_date и search_result! = -1: break

Alina Li 27.10.2018 01:41

Этот код не работает и вызывает ошибку «AttributeError: <unknown> .Senton». Я даже пробовал «if sub_today в msg.Subject и msg.Senton.date () == val_date: break», но при загрузке атрибута первого письма нет из всех. Я даже пробовал запускать вложенный цикл for несколько раз, но без изменений.

Ribhujeet Das 27.10.2018 17:46

Другие вопросы по теме