2015-05-03 33 views
0

我正在設置一個小工具來輪詢POP3帳戶,然後轉發找到的郵件。我使用OpenPop.NET庫進行POP3訪問,並且很可能會使用.NET SmtpClientMailMessage類來轉發郵件。如何使用POP3和SmtpClient轉發多部分MIME電子郵件?

OpenPop.NET給了我一個Message類,它允許我將整個消息(即標題和所有部分)保存到一個文件中,但是當我想發送消息時,我只想要一個正文。現在Message有一個收集部分,每個部分都有自己的Body屬性,其中Body是一個字節數組。看起來我可以使用AlternateViews集合將這些部分中的每一個附加到MailMessage,但我有點擔心字節數組到字符串轉換的編碼問題。

我也接受其他方式的建議,以實現這一目標,但現在我正在考慮的過程是我所知道的唯一過程。

+0

你是一種將身體保存爲字符串的方法嗎? – Shaun07776

+0

@ Shaun07776每個'MessagePart'都有一個字節數組'Body',我可以保存爲一個字符串,如果這就是你要求的。 – ProfK

回答

0

請使用下面的代碼AlternativeView

_MailMessage.BodyEncoding = System.Text.Encoding.GetEncoding("utf-8"); 

      AlternateView plainView = AlternateView.CreateAlternateViewFromString(System.Text.RegularExpressions.Regex.Replace(_Body, "<(.|\\n)*?>", string.Empty), null, "text/plain"); 
      AlternateView htmlView = AlternateView.CreateAlternateViewFromString(_Body, null, "text/html"); 

      _MailMessage.AlternateViews.Add(plainView); 
      _MailMessage.AlternateViews.Add(htmlView); 
+0

我認爲這有點過分簡化了。如果電子郵件有多個部分會怎麼樣? – ProfK

+0

只有看到郵件的純文本部分的人才是那些將其電子郵件客戶端配置爲接收純文本電子郵件的收件人,反垃圾郵件內容過濾器正在尋找一些文本來平衡HTML郵件中的圖像。其他人只會看到你漂亮的HTML電子郵件設計。 –

+0

如果收件人在愚蠢的Unix終端上用PINE讀取您的電子郵件會怎麼樣?並非所有人都使用Outlook或Thunderbird以及HTML渲染支持。 – jstedfast

相關問題