Как читать только новый контент в теле VSTO Outlook MailItem? - PullRequest
5 голосов
/ 01 февраля 2010

Я написал небольшую надстройку C # VSTO для Outlook 2003, которая читает текст электронных писем по мере их отправки в поисках определенных слов. Сейчас работает, чтобы сделать это:

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

... но это проверяет все тело письма, а не только новое отправляемое сообщение.

В любом случае Outlook должен просто проверять содержимое нового отправляемого сообщения и игнорировать старую цепочку электронной почты, которая также может быть там?

Эти сообщения могут быть в любом формате (HTML, Rich Text, Plain Text) и могут включать или не включать в себя какие-либо более ранние сообщения. Для меня это всего лишь инструмент производительности, поэтому любой работающий хак стоит рассмотреть здесь.

Спасибо!

Ответы [ 2 ]

1 голос
/ 01 июля 2011

Для справки, решение, которое я решил, лучше всего для меня состояло в том, чтобы просто проверить строку, начинающуюся с "ОТ:", предложил Микаэль. Я прекращаю поиск своего текста, как только он найден. Какое-то время это работало для меня нормально.

Спасибо всем за ответы и идеи.

Вот мой код для справки:

    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
1 голос
/ 11 марта 2011
...