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邮件格式,编码解码方式,和正则表达式,具体实现方法还没完整的,本人也只做了部分,但现在没时间,暂时先和大家说说方法。

待续……

原文地址:https://www.cnblogs.com/ViviChan/p/4981718.html