2011-01-06 30 views
5

我正在尋找一種解決方案,以允許我閱讀傳入的電子郵件。這三種方法我能想到的要做到這一點,此刻是:如何使用C#讀取傳入郵件

  1. 創建一個電子郵件服務器解析電子郵件
  2. 鉤到現有的Exchange服務器
  3. 鉤到已經設置了電子郵件的前景帳戶

這樣做的最佳方法是什麼?一個人如何去實現它?

感謝

+0

我認爲這真的取決於您打算如何處理電子郵件。如果您正在創建一個Web應用程序,那麼輪詢或使用服務來接收傳入的電子郵件將有所幫助。如果你真的想從Outlook的角度與電子郵件進行交互,那麼建立一個附加組件可以提供幫助。 – 2011-01-07 13:57:26

+0

@Steve我希望能夠閱讀郵件(附件),解析它,然後發出自動回覆。 – Chris 2011-01-07 16:37:18

回答

9

如果您已經在Exchange服務器的郵箱主人,我建議利用它通過IMAP(首選)或POP訪問處理。最近我開發了一個解決方案,通過AfterLogic's MailBee.NET IMAP component訪問指定的郵箱,我認爲這是值得推薦的。他們有一個標準的試用版和合理的價格。同樣,如果你走這條路線,POP或IMAP自動化足夠靈活,幾乎可以與任何郵箱服務器平臺配合使用;它不必侷限於Exchange環境。

也有免費的.NET IMAP組件可以完成這項工作。在我有限的研究中,我發現免費的替代品並不完全滿足我的要求,或者不容易學習,但您的情況可能會有所不同。爲了完整起見,這裏是我決定花的錢上的MailBee之前考慮替代/免費IMAP服務庫名單:

爲了解決你問題的第二部分......在我最近的項目實施參與編寫引用第一個非常簡單的控制檯應用程序e MailBee.NET IMAP庫。控制檯應用程序具有標準配置文件並接受命令行參數作爲參數。我們根據我們的流程需求定義Windows計劃任務以運行控制檯應用程序。我相信你可以通過其他方式做到這一點,但這是滿足我們需求的最簡單的方法。

2

使用現有的IMAP服務器和IMAP component

在我看來,創建自己的IMAP服務器是一個很大的安全風險。

有免費的成分,但其​​中大多數都與民族特色和「不規範」的電子郵件問題......且有(LumiSoft.Net被放棄了將近2年)沒有支持

using(Imap imap = new Imap()) 
{ 
    imap.Connect("imap.server.com"); 
    imap.Login("user", "password"); 

    imap.SelectInbox(); 
    List<long> uidList = imap.Search(Flag.Unseen); 
    foreach (long uid in uidList) 
    { 
     IMail email = new MailBuilder() 
      .CreateFromEml(imap.GetMessageByUID(uid)); 
     Console.WriteLine(email.Subject); 
     Console.WriteLine(email.Attachments.Count); 
    } 
    imap.Close(); 
} 

Mail.dll還包含SMTP組件和template engine,因此您可以輕鬆發送回覆。

聲明:我參與了此商業產品的開發。

5

我知道這是一個較舊的線程,但我想一個鏈接到一個偉大的開放IMAP源庫調用ImapX2:http://imapx.codeplex.com/

我想最該線程中鏈接到不同程度的成功,但我發現根據我的需要,ImapX2庫工作得最好。