如何只读取VSTO Outlook MailItem正文中的新内​​容?

时间:2010-02-01 16:50:57

标签: c# .net outlook vsto add-in

我为Outlook 2003编写了一个小的C#VSTO加载项,用于在发送电子邮件时读取它们,查找某些单词。它现在正在努力做到这一点:

if (currentItem.Body.Contains("text to search for"))

...但是会检查整个电子邮件正文,而不仅仅是正在发送的新邮件。

有没有让Outlook只检查正在发送的新邮件的内容,所以忽略那里可能存在的旧电子邮件链?

这些消息可以是任何格式(HTML,富文本,纯文本),可能有也可能没有链接的任何早期消息。这对我来说只是一种生产力工具,因此任何有效的黑客都值得考虑。

谢谢!

2 个答案:

答案 0 :(得分:1)

@Corbin March在这里有最好的答案Separate a multipart email using Mime Parsers

答案 1 :(得分:1)

对于记录,我认为最适合我的解决方案是简单地检查以“FROM:”开头的行,Mikael建议。一旦发现,我就会停止搜索我的文本。这对我来说已经好了一段时间了。

感谢大家的回应和想法。

这是我的参考代码:

    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim theLine As String
    Dim aBody()
    Dim bFound As Boolean
    Dim ctr As Long

    aBody = Array(Split(Item.Body, vbNewLine))
    bFound = False

    For ctr = 0 To UBound(aBody(1))
        theLine = aBody(1)(ctr)
        If InStr(theLine, "From:") > 0 Then
            Exit For
        End If

        If InStr(UCase(theLine), "ATTACH") > 0 Then
            bFound = True
        End If

    Next

    If bFound Then
        If Item.Attachments.Count < 1 Then
            Dim ans As Integer

            ans = MsgBox("Do you really want to send this without any attachments?", vbYesNo)
            If ans = 7 Then
                Cancel = True
                Exit Sub
            End If
        End If
    End If

End Sub