AttributeError: <unknown>.Senton ошибка в Python - Outlook - PullRequest
0 голосов
/ 19 сентября 2019

Я полный новичок в Python.Я хочу написать код на Python, который загружает определенный файл из определенного электронного письма (который содержит 3 или 4 файла Excel) из outlook и сохраняет его в моем каталоге (конкретный путь).Я получил код и попытался изменить его в соответствии с моими потребностями, но я получил эту ошибку «AttributeError: .Senton».Действительно оцените вашу помощь или любую помощь.

Я попытался использовать модуль win32com.client, потому что он из приложения Outlook и сохраняет все файлы с сегодняшнего дня.Вот мой код

# -*- coding: latin-1 -*-
import win32com.client
import os
import datetime

today = datetime.date.today()
path = os.path("D:\my_path")

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") #Opens Microsoft Outlook
inbox = outlook.GetDefaultFolder(6) #N4 Invocie folder
messages = inbox.Items  #Get first email


def saveattachemnts(subject = "Title Maíl - *"):
    for message in messages:
        if message.Subject == subject and message.Unread or message.Senton.date() == today:
            attachments = message.Attachments
            attachment = attachments.Item(1)
            for attachment in message.Attachments:
                attachment.SaveAsFile(os.path.join(path, str(attachment)))
                if message.Subject == subject and message.Unread:
                    message.Unread = False
                break

saveattachemnts()
os.system("this_python.py")

Я хочу, чтобы этот код запускался каждый день, и он должен загружать файлы из определенной почты, называемой «Почта заголовка - 20190819», и последняя дата меняется каждый день, поэтому я использовал такие символы подстановки, как"Title Maíl - *" (с ударением), чтобы найти правильное письмо, и в этом письме он должен загрузить определенный файл Excel по имени (например, имя должно быть "AB - Consolidado 20190819") и сохранить его вкаталог на моем компьютере, и когда я закончу, мне интересно узнать, возможно ли в конце запустить другой python с именем «this_python.py», например, эта программа разбивает Excel и сохраняет свои файлы в csv.(это уже сделано) Но теперь я получаю эту ошибку "AttributeError: .Senton" и не могу найти много документации по этому вопросу.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Я просто редактирую его, и теперь я могу использовать его для каждого дня с переменной времени :), поэтому я просто избавляюсь от "Setondate", пока он работает:


import win32com.client
import os.path
import datetime

a = str((datetime.date.today()).strftime('%Y%m%d'))

def saveattachemnts(subject,name,path):
    outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") #Opens Microsoft Outlook
    inbox = outlook.GetDefaultFolder("6") #N4 Invocie folder
    messages = inbox.Items  #Get emails
    today = datetime.date.today()
    pathToSave = os.path.expanduser(path)
    for msg in messages:
        if msg.Subject == subject and msg.Unread:
            break
    for att in msg.Attachments:
        if att.FileName == name:
            if msg.Subject == subject and msg.Unread:
                msg.Unread = False
            break

    att.SaveASFile(pathToSave  + "\\"  + att.FileName)
    print("Mail Successfully Extracted")

saveattachemnts("The subject" + a +"-1",
                "The file name - " + a + "-1.xlsx", "D:\my_path")
0 голосов
/ 20 сентября 2019

Во-первых, вы предполагаете, что в папке есть только MailItem объекты.Вы также можете иметь ReportItem, MeetingItem и т. Д., Которые не предоставляют свойство SentOn.Сначала вам нужно проверить, что свойство Class (доступно всем объектам OOM) == 43 (это olMail) - взгляните на объекты OOM с помощью OutlookSpy (нажмите кнопку элемента).

Во-вторых, вы используете оператор == при проверке свойства `SentOn.Сравнение никогда не станет истинным - все свойства даты / времени в COM являются двойными: в части int хранится количество дней с 31.12.1999, а в дробной части - время дня.У вас всегда будут ошибки округления.Вам нужно использовать диапазон (> и <) или сначала обрезать обе части до целых, а затем сравнить их. </p>

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