使用Python和win32com将MailItem添加到PST

2024-09-29 19:32:05 发布

您现在位置:Python中文网/ 问答频道 /正文

向动态创建的PST文件添加新邮件时遇到问题。我可以自己创建邮件项目,并将它们保存到我计算机上的某个位置。但是,当我尝试将邮件项目保存到PST时,什么也没有发生。我尝试调用Items.Add()方法,它给了我一个新的MailItem,但是Items集合没有增加。我到处都在寻找解决方案,我在VBA和C#中看到了一些例子,但由于我对这两种语言都没有经验,因此翻译成Python的效果并不好

当前正在使用Python 3.9.1

下面是我正在做的事情,请原谅我的任何错误,我对我的Python非常生疏:

Outlook = None
pst = os.path.join(self.destPath, (dest + ".pst")

try:
    Outlook = win32com.client.Dispatch(r'Outlook.Application')
except pywintypes.com_error as ex:
...

if Outlook:
    ns = Outlook.getNamespace(r'MAPI')
    ns.AddStore(pst)
    pststore = None
    
    for store in ns.Stores:
        if store.GetRootFolder().Name == dest:
            pststore = store
            break

    ... #get mailItem information from external EML .....

    pstfld = pststore.GetRootFolder().Folders.Add("Sent")
    
    folderItems = pstfld.Items
    mailItem = folderItems.Add("IPM.Note")
    mailItem.Subject = ....
    mailItem.Recipients.Add(...)
    mailItem.Sender = ...
    mailItem.HTMLBody = ...

    mailItem.Save()

    .....

    ns.RemoveStore(pststore.GetRootFolder())

提前谢谢

编辑:

在发布问题后,找到了一个临时的解决办法,并对代码进行了更多的修改。在mailItem.Save()之后调用mailItem.Move(pstfld)得到了我需要的结果;MSG文件将添加到PST文件中


Tags: 文件项目storenoneadd邮件itemsns

热门问题