Jmail读取邮件详细内容乱码问题
Jmail控件的操作很简单,实现收发邮件只需几行代码,但经常会有人遇到收邮件时,部分内容是乱码的问题,比如读取别人转发的邮件时,经过我的测试,所有转发邮件Jmail都未能正常读取。是什么原因呢?见图:
上图是用CMD命令读到的邮件网络流数据,其中每个像From: ……; To: ……都是一个域,每个域代表了不同的意义,具体大家可以网上查,挺多资料,这是MIME邮件格式,是现在最普遍的邮件格式。
不说废话,继续Jmail的问题,为什么Jmail不能正常读取,个人还不是很清楚,不过个人感觉是Jmail读邮件时是按行读取的,而正好,转发的邮件每个域的内容都是换行的,比如Jmail发现了From,那么它就取From冒号后面的内容,然后解码,但并没有取全,自然就解不了码。
免费的Jmail不会给用户提供太多的功能
那么怎么解决这个问题呢,大家可以尝试让Jmail读取一个邮件的所有数据:
jmail.POP3Class popEmail = new POP3Class();
jmail.Message msg;
jmail.Attachments atts;
try
{
popEmail.Connect(user, pass, addr, int.Parse(port)); //参数分别是:用户名,密码,邮件服务器地址(我用的是pop.qq.com),端口号(对应pop:110
string emailText = popEmail.Messages[i].Text //这里读到的就是整个邮件的内容(未解码)
}
catch(Exception ex)
{
}
finally
{
popEmail.Disconnect();
}
得到未解码的邮件后就需要大家自己解码,怎么解码呢?大家就需要了解MIME邮件格式,编码解码方式,和正则表达式,具体实现方法还没完整的,本人也只做了部分,但现在没时间,暂时先和大家说说方法。
待续……