如何使用visual studio 2013在Outlook中标记未读电子邮件

时间:2014-04-30 09:39:39

标签: outlook vb.net-2010

您好我正在开发outlook addin,这将自动完成提取未读附件的未读电子邮件的任务。提取文件夹的附件。但是,我能够编码从电子邮件到文件夹的附件提取,但我意识到我应该指出的两个问题。有些电子邮件可能包含多个附件,有些附件可能具有相同的文件名(并且在解压缩时需要自动重命名以防止覆盖)。所以我无法理解如何编写它?我还想要代码在特定文件夹中检索到没有附件的电子邮件。请帮助解决此问题。以下是从电子邮件中提取文件夹中的附件的代码。 公共类ThisAddIn

Private Sub ThisAddIn_Startup() Handles Me.Startup
    Dim inbox As Outlook.MAPIFolder = Me.Application.ActiveExplorer.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox)
    Dim unreadItems As Outlook.Items = inbox.Items.Restrict("[Unread]=true")
    Dim inboxItems As Outlook.Items = inbox.Items.Restrict("[Unread]=true")
    Dim newEmail As Outlook.MailItem
    MsgBox(String.Format("Unread items in Inbox = {0}", unreadItems.Count))
    Try
        For Each collectionItem As Object In inboxItems
            newEmail = TryCast(collectionItem, Outlook.MailItem)
            If newEmail IsNot Nothing Then
                If newEmail.Attachments.Count > 0 Then
                    For i As Integer = 1 To newEmail.Attachments.Count
                        For j As Integer = i + 1 To newEmail.Attachments.Count
                            ' Dim saveAttachment As Outlook.Attachments = newEmail.Attachments(i)
                            If newEmail.Attachments(i).FileName.Equals(newEmail.Attachments(j).FileName) Then
                                newEmail.Attachments(j).SaveAsFile("C:\Attachment\Copy\" & (newEmail.Attachments(j).FileName))

                                Exit For
                            End If
                        Next (j)
                        newEmail.Attachments(i).SaveAsFile("C:\Attachment\" & (newEmail.Attachments(i).FileName))
                    Next (i)
                End If

            End If

        Next collectionItem

    Catch ex As Exception
        If Left(ex.Message, 11) = "Cannot Save" Then
            MsgBox("Create Folder C:\Attachment")
        End If

    End Try



End Sub

1 个答案:

答案 0 :(得分:0)

使用System.IO.File.Exists时,您必须使用自己的逻辑来提供唯一的文件名。一个简单的循环并在名称后附一个数字就足以应对文件名冲突。

但你究竟是什么意思“我希望代码中没有在特定文件夹中检索到附件的电子邮件”。是否要挂钩特定文件夹的Folder.Items.ItemAdd事件以检测何时传递新电子邮件或将其添加到该文件夹​​?或者,您是否要将没有附件的电子邮件移动到特定文件夹?