如何创建一个新的PST文件(不在收件箱中)并将Outlook邮件移动到该PST

时间:2019-06-10 04:58:06

标签: vb.net outlook

我是编程新手。尝试学习VB.net为我的教会完成一个项目。

使用VB.net,我需要阅读Outlook电子邮件并解析各种数据,最后将其放入SQL中。完成后,我需要将电子邮件项目从“收件箱”中移到一个子PST文件,我希望该文件每周创建一次,位于名为“完成/今天的日期”的现有PST下。 PST不在收件箱中。

我花了几个月的时间尝试学习并将代码拼凑在一起。现在,我可以阅读收件箱中的电子邮件了。我刚刚开始对数据进行解析的编码,以后我会担心将其移至SQL。我今天的问题是正确设置目标PST(“今天完成”)。并且可能是执行此操作的正确语法。我使用的代码的缩写版本如下:

Imports Microsoft.Office.Interop

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim dt As New DataTable
        Dim olApp As Outlook.Application = New Outlook.Application()
        Dim ns As Outlook.NameSpace = olApp.GetNamespace("MAPI")
        Dim selectFolder As Outlook.MAPIFolder = Nothing
        Dim mi As Outlook.MailItem = Nothing
        Dim olDestinationFolder As Outlook.MAPIFolder = Nothing
        selectFolder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox)
        olDestinationFolder = ns.GetDefaultFolder(Outlook.Folder.ns.Folders("\\seafood@cgw.com\done\4 12 2019")

 ~~~~~Code set up data table to prepare parsing - NOT SHOWN HERE~~~~~~

       For Each item As Object In selectFolder.Items
           ~~~~`Code for parsing - NOT SHOWN HERE ~~~~~~

            dt.Rows.Add(dr)
            i += 1
            item.Move(olDestinationFolder) 'after parsing move mail item
        Next
        Me.DataGridView1.DataSource = dt  'display parsed data, just to see
     'Closing apps and files
        olApp = Nothing
        ns = Nothing
        selectFolder = Nothing
        mi = Nothing
        olDestinationFolder = Nothing

        MsgBox("Ready to close") ' A msg just so I know code has run
    End Sub
End Class

我希望将电子邮件移动到PST文件夹(从“收件箱”中删除并添加到PST文件夹中。)该程序引发错误“'ns'不是'Folder'的成员”。当我在第12行进行WAG时,我并不感到惊讶,“ olDestinationFolder = ns.GetDefaultFolder(Outlook.Folder.ns.Folders(“ \ seafood@cgw.com \ done \ 4 12 2019”))“我只是不知道如何设置导致错误的目标文件夹。或将邮件项目移动到此文件夹的正确方法。谢谢!

1 个答案:

答案 0 :(得分:0)

olDestinationFolder = ns.GetDefaultFolder(Outlook.Folder.ns.Folders("\\seafood@cgw.com\done\4 12 2019")

必须为

olDestinationFolder = ns.Folders("seafood@cgw.com\done\4 12 2019")

假设已将名为“ seafood@cgw.com \ done \ 4 12 2019”的PST文件添加到配置文件中(我怀疑,因为文件名中不能包含“ \”)。如果没有,则可以使用Namespace.AddStoreEx以编程方式添加新的PST文件。

还请注意,更改集合时(例如,调用item.Move时,请不要使用“ for each”-使用下循环(for i = Items.Count to 1 step -1)。