在Lumisoft.NET元件擷取POP3郵件的時候,發現大多數郵件都能正常擷取,不過對于一些特殊的郵件,好像總是會出現轉換錯誤,或者出現亂碼及部分亂碼現象,有些在标題裡面或者郵件接收人位址,而有些則在内容裡面,為了更好整理相關的問題,寫了本文,希望對大家使用該元件有一定的幫助作用。
錯誤資訊:[2013-05-04 10:49:03] 轉換郵件的Date出錯:賬号[email protected] 郵件标題:ICP???????????????????????wuhuacong)
LumiSoft.Net.ParseException: Header field 'Date' parsing failed.
在 LumiSoft.Net.Mail.Mail_Message.get_Date()
在 WHC.PlugInService.Pop3Helper.Receive() 位置 ......\Pop3Helper.cs:行号 160
錯誤原因:由于郵件格式的日期内容格式不同,導緻無法正常解析。如一般的格式為下面
有些郵件日期格式是2013-05-06 19:01:44,則Lumisoft元件無法解析,需要跟蹤到他的郵件日期處理的代碼,然後進行修改才可以實作正常的郵件日期解析了。
官方的代碼如下所示。
需要增加對普通日期格式的修改,修改後的代碼如下所示
錯誤資訊:[2013-05-04 10:13:54] System.IO.IOException: 由于意外的資料包格式,握手失敗。
在 LumiSoft.Net.TCP.TCP_Client.Connect(String host, Int32 port, Boolean ssl)
在 WHC.PlugInService.SmtpHelper.Send() 位置 ........\SmtpHelper.cs:行号 123
在 WHC.PlugInService.SendMailService.DataThreadHandle(MailSendConfigInfo info) 位置 ...............\SendMailService.cs:行号 66
錯誤原因:由于POP3的配置端口不正确導緻,一般的端口必須嚴格按照正常的來填寫。
郵件SMTP和POP3常用配置說明:
郵箱
Smtp伺服器
Smtp端口
POP3伺服器
POP3端口
使用SSL
Gmail.com
smtp.gmail.com
465
pop.gmail.com
995
true
QQ.com
smtp.qq.com
25
pop.qq.com
110
163.com
smtp.163.com
pop.163.com
false
Sina.com
smtp.sina.com
pop.sina.com
其他
smtp.test.com
pop.test.com
錯誤資訊:标題出現類似=?utf-8?B?5rWL6K+V6YKu5Lu2?=
錯誤原因:這個是因為編碼的問題,其中=?utf-8?B是表示該段字元為UTF-8的格式,後面的是base64格式的内容。除了utf-8,還可以出現gb2312或者ibm-euccn等格式。為了轉換上面的編碼問題,我寫了一個轉碼函數,如下所示。
如可以通過代碼吧标題進行轉碼解析
轉碼後,标題和相關的内容都可以正常顯示了。
除了上面的轉碼操作,還有一種更好的方法,能夠使得郵件相關資訊正常顯示。
因為通過分析了解到,由于Lumisoft的Mail_Message.ParseFromByte函數預設隻是以UTF8轉換位元組,一旦位元組為GB2312格式,就會發生轉換亂碼問題,是以先經過Default編碼轉換,然後再以UTF8擷取位元組,即可正常轉換郵件頭部。
這樣擷取到的标題,以及郵件頭部等資訊,都是正常的了。