2014-09-20 136 views
4

我使用POP3來接收電子郵件。但是編碼錯誤,如電子郵件的主題「主題」變成了「不尋常」。中文錯誤,當文本內容爲英文時強文本,無錯誤。誰能告訴我,我該怎麼辦?下面的代碼:POP3接收電子郵件編碼C#

POP3 pop = new POP3(); 
pop.Connect("userName", "password", "pop.126.com", 110);//smtp.126.com 
pop.DownloadMessages(); 
for (int i = 1; i < pop.Messages.Count; i++) 
{ 
    Email email = new Email(); 
    Message msg = pop.Messages[i]; 
    email.From = msg.From; 
    email.FromName = msg.FromName; 
    email.Body = msg.HTMLBody; 
    email.Title = msg.Subject; 
} 
+0

請提高您的問題的質量。我們需要更多信息,並請顯示您已完成的研究。謝謝 – krisdyson 2014-09-20 07:43:55

+2

據我所知,在C#中沒有對POP3的直接支持。 「POP3」課程從哪裏來? – ferc 2014-09-20 08:59:15

回答

14

我不知道你使用的POP3庫,但它顯然是打破,沒有什麼可以做「修理」你的代碼,使之超出切換到另一個POP3庫工作,例如我的MailKit庫,它是唯一能夠在所有情況下正確處理字符集的庫(大多數將處理拉丁文1好,但完全無法用於中日韓字符集)。

大多數客戶端因拉丁語1(ISO-8859-1)之外的任何內容而斷裂的原因是大多數電子郵件庫都具有隻能在字符串上工作的解析器。爲了將消息數據從字節轉換爲字符串,他們需要選擇System.Text.Encoding(並且大多數選擇ISO-8859-1)。他們假定電子郵件遵循各種RFC中列出的將電子郵件標題限制爲US-ASCII的規則,但它是非常常見的,客戶可以忽略這些規則。

與其他解析器不同,MailKit的電子郵件解析器解析字節流,因此在開始解析消息之前不需要字符集轉換。這允許解析器正確處理標題和正文中的混合字符集。

+6

事情是,我希望有一個人寫一個免費的MIT許可證庫來成爲監控這些類型問題的人,並且可能是最好的回答他們的人。他們正是那些知道這些東西的人。所以...爲什麼要把他打倒。規則被詛咒。如果他沒有幫助釋放狗。使用一些判斷雖然呃? – 2015-07-25 18:48:48

+0

爲什麼我的評論已被刪除? – gianmt 2015-07-26 08:53:54