2010-02-01 94 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