2010-02-01 96 views
4

我已经为Outlook 2003编写了一个C#VSTO加载项,用于在发送邮件时查找电子邮件正文,查找某些单词。它现在正在工作,这样做:如何只读取VSTO Outlook MailItem正文中的新内​​容?

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

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

反正是有让Outlook只是检查新邮件的内容被发送,因此忽略了,可能是在那里过上了年纪的电子邮件链?

这些消息可以是任何格式(HTML,Rich Text,纯文本),也可能没有链接任何早期的消息。这只是我的一个生产力工具,所以任何破解工作都值得在这里考虑。

谢谢!

+3

根据在你可以做几件事情链中使用的电子邮件程序:跳过开始“>”行。当您点击以“From:”开头的行时停止处理。如果回复是在原始帖子之间,那么可能很难,并且没有100%的方法。 另一种方法可能是在写入新电子邮件时抓取键击。 – 2010-02-01 20:35:24

+0

这些都是好主意,Mikael。我不想为观看击键而烦恼,但我会按照您所描述的方式研究解析消息的文本。 – Peter 2010-02-02 18:12:25

+0

如何在对话中使用前一封邮件的正文? – SaguiItay 2011-03-06 20:58:28

回答

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