我是编程新手。尝试学习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”))“我只是不知道如何设置导致错误的目标文件夹。或将邮件项目移动到此文件夹的正确方法。谢谢!
答案 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
)。