使用VB.net将邮件移动到Outlook中的其他文件夹时,Mailitem移动错误

时间:2014-05-06 20:49:34

标签: vb.net outlook com-interop

使用VB.net将邮件移动到Outlook中的其他文件夹时,Mailitem移动错误

在尝试使用VB.net中的Outlook Com Interop移动MailItem时,我在Outlook中遇到错误。我在访问邮件,阅读邮件或获取相关文件夹时没有任何问题,只是在尝试间歇性地移动邮件时出现此错误。

以下是应用程序报告的错误消息:

 `System.Runtime.InteropServices.COMException(0x80040107): The operation failed. at Microsoft.Office.Interop.Outlook_Mailitem.Move(MAPIFolderDestFldr) at ApplicationName.MainWindow.EmailImport() at System.Threading....`

嗯,你明白了。

以下是相关代码:

Dim OutlookAp As New Outlook.Application
Dim NS As Outlook.Namespace = OutlookAp.GetNamespace("MAPI")
Dim ObjFolder As Outlook.Folder
Dim Inbox As Outlook.Folder
Dim CEBFolder As Outlook.Folder
Dim DestinationFolder As Outlook.Folder
Dim Mesg As Outlook.Mailitem

以下是我获取文件夹的方法:

For Each ObjFolder in NS.Folders
    If ObjFolder.Name = "CEB Folder Name" Then
        CEBFolder = ObjFolder
        Exit For
    End If
Next ObjFolder

编辑:包括其余文件夹:

For Each ObjFolder in CEBFolder.Folders
    If ObjFolder.Name = "Inbox" then
        Inbox = ObjFolder
        Exit For
    End If
Next ObjFolder

For Each ObjFolder in Inbox.Folders
    If ObjFolder.Name = "Destination Folder" then
        DestinationFolder = ObjFolder
        Exit For
    End If
Next ObjFolder

等等。以下是我如何移动信息:

For Counter = Inbox.Items.Count to 1 Step -1
    If TypeName(Inbox.Items(Counter)) = "MailItem" then
        Mesg = Ctype(Inbox.Items(Counter), Outlook.MailItem)
        'Do some parsing of the message
        Mesg.Move(DestinationFolder)
    End If
Next Counter

这就是它。这段代码在大多数情况下似乎都是成功的,但是Outlook一次又一次不会让我移动一条消息,完全停止。

一如既往,非常感谢任何想法。

2 个答案:

答案 0 :(得分:1)

您似乎永远不会分配DestinationFolder,因此您尝试将邮件移至Null

答案 1 :(得分:0)

您似乎无法移动MailItems,这些邮件是系统对未传递的电子邮件的响应,它们显示为MailItem类型,但似乎不支持在文件夹之间移动-也许它们是虚拟邮件项目。在其他地方查看有关处理未送达邮件的主题