python – 使用win32com和/或active_directory,如何按名称访问电
发布时间:2020-12-20 11:12:31 所属栏目:Python 来源:网络整理
导读:在使用win32com和/或active_directory的 python w / Outlook 2007中,如何获取对子文件夹的引用,以便将MailItem移动到该子文件夹? 我有一个收件箱结构,如: Inbox | +-- test | `-- todo 我可以访问收件箱文件夹,如: import win32com.clientimport active_d
在使用win32com和/或active_directory的
python w / Outlook 2007中,如何获取对子文件夹的引用,以便将MailItem移动到该子文件夹?
我有一个收件箱结构,如: Inbox | +-- test | `-- todo 我可以访问收件箱文件夹,如: import win32com.client import active_directory session = win32com.client.gencache.EnsureDispatch("MAPI.session") win32com.client.gencache.EnsureDispatch("Outlook.Application") outlook = win32com.client.Dispatch("Outlook.Application") mapi = outlook.GetNamespace('MAPI') inbox = mapi.GetDefaultFolder(win32com.client.constants.olFolderInbox) print 'n'.join(dir(inbox)) 但是当我尝试按照Microsoft’s example进行子目录测试时,收件箱对象没有文件夹界面或任何获取子目录的方法. 如何获得指向测试子目录的Folder对象? 解决方法
我意识到这是一个老问题,但我最近一直在使用win32com软件包,发现文档很麻烦,至少可以说…我希望有人,有一天可以挽救我经历过的动荡试图围绕MSDN的混乱说明
这是一个python脚本遍历Outlook文件夹,访问我喜欢的电子邮件的例子. 放弃 import win32com import win32com.client import string import os # the findFolder function takes the folder you're looking for as folderName,# and tries to find it with the MAPIFolder object searchIn def findFolder(folderName,searchIn): try: lowerAccount = searchIn.Folders for x in lowerAccount: if x.Name == folderName: print 'found it %s'%x.Name objective = x return objective return None except Exception as error: print "Looks like we had an issue accessing the searchIn object" print (error) return None def main(): outlook=win32com.client.Dispatch("Outlook.Application") ons = outlook.GetNamespace("MAPI") #this is the initial object you're accessing,IE if you want to access #the account the Inbox belongs too one = '<your account name here>@<your domain>.com' #Retrieves a MAPIFolder object for your account #Object functions and properties defined by MSDN at #https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mapifolder_members(v=office.14).aspx Folder1 = findFolder(one,ons) #Now pass you're MAPIFolder object to the same function along with the folder you're searching for Folder2 = findFolder('Inbox',Folder1) #Rinse and repeat until you have an object for the folder you're interested in Folder3 = findFolder(<your inbox subfolder>,Folder2) #This call returns a list of mailItem objects refering to all of the mailitems(messages) in the specified MAPIFolder messages = Folder3.Items #Iterate through the messages contained within our subfolder for xx in messages: try: #Treat xx as a singular object,you can print the body,sender,cc's and pretty much every aspect of an e-mail #In my case I was writing the body to .txt files to parse... print xx.Subject,xx.Sender,xx.Body #Using move you can move e-mails around programatically,make sure to pass it a #MAPIFolder object as the destination,use findFolder() to get the object xx.Move(Folder3) except Exception as err: print "Error accessing mailItem" print err if __name__ == "__main__": main() PS希望这不会弊大于利. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |