急!高分求救!邮件的编码问题??
jdxx 2003-06-25 08:31:08 我写了一个接受邮件的SMTP的控件,什么都搞定了,就是出来一堆乱码,如果标题是英文的,没有问题,如果是中文,就是乱码,怎么解决?附一些源码:
我觉得可能是
Encoding tmpEncoding = Encoding.Default;
的问题,但其他我都试过了,如:ASCII,Unicode,UTF7,UTF8,GetEncoding("GB18030"),都不行,谁能帮帮我!!!!!!!!
//源码如下:
private void MsgReceive(int BufSize)
{
int nTotalRead = 0;
try
{
int bytesread = 0;
m_strTempResponse = null;
StringBuilder sbTemp = new StringBuilder((int)(BufSize * 1.5));
byte[] recvBuf = new byte[m_nMaxBuffer + 1]; // extra char for
do
{
bytesread = m_sSocket.Receive(recvBuf, m_nMaxBuffer, 0);
if(bytesread == 0)
break;
nTotalRead += bytesread;
recvBuf[bytesread] = System.Convert.ToByte('\0');
Encoding tmpEncoding = Encoding.Default;
sbTemp.Append(tmpEncoding.GetChars(recvBuf, 0, bytesread));
}while(m_sSocket.Poll(100, SelectMode.SelectRead));
m_strTempResponse = sbTemp.ToString();
int nResp = m_strTempResponse.Substring(0, 5).IndexOf(POS_STAT_IND);
if(nResp <= 0)
{
string strExcept = "Received negative response from POP3 server";
throw new POP3CommException(strExcept);
}
}
catch(POP3CommException e)
{
m_strError = e.Message;
TRACE(e.ToString());
string strErr = DateTime.Now.Date.ToString();
strErr += DateTime.Now.TimeOfDay.ToString();
strErr += "\t";
strErr += e.Message;
LogError(strErr);
throw new POP3CommException(e.Message);
}
catch(SocketException e)
{
m_strError = e.Message;
TRACE(e.ToString());
string strErr = DateTime.Now.Date.ToString();
strErr += DateTime.Now.TimeOfDay.ToString();
strErr += "\t";
strErr += e.Message;
strErr += "\nSocket Error: ";
strErr += e.ErrorCode.ToString();
LogError(strErr);
throw new SocketException(e.ErrorCode);
}
catch(Exception e)
{
m_strError = e.Message;
TRACE(e.ToString());
string strErr = DateTime.Now.Date.ToString();
strErr += DateTime.Now.TimeOfDay.ToString();
strErr += "\t";
strErr += e.Message;
LogError(strErr);
}
}