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



使用 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.comdone4 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'不是'文件夹'的成员"。 我并不感到惊讶,因为我在第 12 行"olDestinationFolder = ns"中获得了 WAG。GetDefaultFolder(Outlook.Folder.ns.Folder("\seafood@cgw.com\done\4 12 2019"))

我不知道如何设置导致错误的目标文件夹。或者将邮件项目移动到此文件夹的正确方法。

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

必须是

olDestinationFolder = ns.Folders("seafood@cgw.comdone4 12 2019")

假设一个名为"seafood@cgw.com\done\4 12 2019"的PST文件已经添加到配置文件中(我对此表示怀疑,因为文件名中不能有"\")。如果没有,您可以使用Namespace.AddStoreEx以编程方式添加新的 PST 文件。

另请注意,在更改集合时不应使用"for each"(ba 调用item.Move) - 使用下循环(for i = Items.Count to 1 step -1)。

最新更新