2010-02-01 6 views
4

J'ai écrit un petit complément C# VSTO pour Outlook 2003 qui lit le corps des courriels au moment où ils sont envoyés, à la recherche de certains mots. Il travaille en ce moment pour le faire:Comment lire uniquement le nouveau contenu dans le corps VSTO Outlook MailItem?

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

... mais qui vérifie l'ensemble du corps du message, non seulement le nouveau message envoyé. De toute façon, Outlook doit-il simplement vérifier le contenu du nouveau message envoyé, et ignorer ainsi la chaîne d'e-mails plus ancienne qui pourrait également s'y trouver? Ces messages peuvent être dans n'importe quel format (HTML, texte enrichi, texte brut) et peuvent contenir ou non des messages plus anciens. Ceci est juste un outil de productivité pour moi, donc tout piratage qui vaut la peine d'être considéré ici .

Merci!

+3

En fonction des programmes de courrier électronique utilisés dans la chaîne, vous pouvez faire plusieurs choses: Passer les lignes commençant par « > ». Arrêtez le traitement lorsque vous frappez une ligne commençant par "De:". Si les réponses sont entre-deux, cela pourrait être difficile, et pas 100%. Une autre approche pourrait consister à saisir les séquences de touches lors de l'écriture d'un nouvel e-mail. –

+0

Ce sont de bonnes idées, Mikael. Je ne veux pas m'embêter à regarder des frappes, mais je vais chercher à analyser le texte du message comme vous l'avez décrit. – Peter

+0

Qu'en est-il de l'utilisation du corps du courrier précédent dans la conversation? – SaguiItay

Répondre

1

Pour mémoire, la solution que j'ai décidé travaillé le mieux pour moi était de vérifier simplement une ligne commençant par « FROM: », Mikael a suggéré. J'arrête de chercher mon texte dès que celui-ci est trouvé. Cela fonctionne très bien pour moi depuis un moment maintenant.

Merci pour les réponses et les idées, tout le monde.

Voici mon code pour référence:

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 
Questions connexes