Я использую win32.client и пытаюсь получить и манипулировать основным текстом электронной почты. Сегодня это работало хорошо, но я думаю, что при тестировании я мог сломать свой прогноз! Теперь кажется, что когда я пытаюсь вызвать индекс объекта _Folders, я получаю ошибку типа, которая не вызывается. Я должен использовать индексы, чтобы попасть в мои вложенные папки. До сегодняшнего вечера это работало отлично, и я не изменил ни один код. Это очень расстраивает, и я все еще плохо знаком с питоном. Любая помощь будет принята с благодарностью !!
Вот мой код:
import win32com.client
import urllib.parse
import webbrowser
from pyshorteners import Shortener
application = win32com.client.Dispatch('Outlook.Application')
namespace = application.GetNamespace('MAPI')
# 6 is the number for the main inbox
inbox_folder = namespace.GetDefaultFolder(6)
# had to create multiple objects of subfolders to get to specific directory
inbox = inbox_folder.Folders
mobile_folder = inbox(3)
mobile_folder_directory = mobile_folder.Folders
mobile_script_folder = mobile_folder_directory(2)
# using Items method to parse specific email files within the folder
messages = inbox_folder.Items
Я получаю эту ошибку:
Файл "mail1.py", строка 10, в mobile_folder = inbox_folders (3) TypeError: объект '_Folders' не вызывается
Я возился с другим кодом, который я нашел на этом сайте ранее. Я пытался отслеживать свою почту на предмет наличия новой почты (которую я до сих пор не понял).
Я выполнил часть этого кода в другом файле с некоторыми изменениями, чтобы соответствовать моим входящим почтовым ящикам
import ctypes # for the VM_QUIT to stop PumpMessage()
import pythoncom
import win32com.client
import sys
# outlook config
SHARED_MAILBOX = "Your Mailbox Name"
# get the outlook instance and inbox folder
session = win32com.client.Dispatch("Outlook.Application").Session
user = session.CreateRecipient(SHARED_MAILBOX)
shared_inbox = session.GetSharedDefaultFolder(user, 6).Items # 6 is Inbox
class HandlerClass(object):
def OnItemAdd(self, item):
print("New item added in shared mailbox")
if item.Class == 43:
print("The item is an email!")
outlook = win32com.client.DispatchWithEvents(shared_inbox, HandlerClass)
def main():
print("Starting up Outlook watcher")
pythoncom.PumpMessages()
if __name__ == "__main__":
try:
status = main()
sys.exit(status)
except KeyboardInterrupt:
print("Terminating program..")
ctypes.windll.user32.PostQuitMessage(0)
sys.exit()
я подозреваю, что это изменилось в версиях outlook Я очень потерян.
У меня также есть кое-что, говорящее, что объект MAPIFolder не может быть вызван ... и мое исследование показало, что это старый, неподдерживаемый протокол outlook.
Вот еще данные, когда я пытаюсь проиндексировать свои папки:
>>> inbox_folder
<win32com.gen_py.Microsoft Outlook 16.0 Object Library.MAPIFolder instance at 0x12191504>
>>> inbox = inbox_folder.Folders
>>> inbox
<win32com.gen_py.Microsoft Outlook 16.0 Object Library._Folders instance at 0x46668848>
>>> inbox(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '_Folders' object is not callable