void GetBody(string sMessageUid, string sPartNumber, ref string sData)
{
ImapResponseEnum eImapResponse = ImapResponseEnum.IMAP_SUCCESS_RESPONSE;
string sCommandSuffix = "";
sCommandSuffix = sMessageUid + " " + "BODY[" + sPartNumber + "]";
string sCommandString = IMAP_UIDFETCH_COMMAND + " " + sCommandSuffix + IMAP_COMMAND_EOL ;
try
{
//-----------------------
// SEND SEARCH REQUEST
ArrayList asResultArray = new ArrayList();
eImapResponse = SendAndReceiveByNumLines(sCommandString, ref asResultArray, 1);
if (eImapResponse == ImapResponseEnum.IMAP_SUCCESS_RESPONSE)
{
//-------------------------
// PARSE RESPONSE
string sLastLine = IMAP_COMMAND_IDENTIFIER + " " + IMAP_OK_RESPONSE;
string sLine = asResultArray[0].ToString();
if (!sLine.StartsWith(IMAP_UNTAGGED_RESPONSE_PREFIX))
{
string sLog = "InValid Message Response " + sLine + ".";
Log (LogTypeEnum.ERROR, sLog);
throw new ImapException(ImapException.ImapErrorEnum.IMAP_ERR_FETCHMSG);
}
long lMessageSize = GetResponseSize(sLine);
if (lMessageSize == 0L)
{
string sLog = "InValid Message Response " + sLine + ".";
Log (LogTypeEnum.ERROR, sLog);
throw new ImapException(ImapException.ImapErrorEnum.IMAP_ERR_FETCHMSG);
}
sData = "";
ReceiveBuffer(ref sData,Convert.ToInt32(lMessageSize));
if (sData.Length == 0)
{
throw new ImapException(ImapException.ImapErrorEnum.IMAP_ERR_FETCHMSG, sCommandSuffix );
}
//Convert.FromBase64String(sData).ToString();
eImapResponse = Receive(ref asResultArray);
if (eImapResponse != ImapResponseEnum.IMAP_SUCCESS_RESPONSE)
throw new ImapException(ImapException.ImapErrorEnum.IMAP_ERR_FETCHMSG, sCommandSuffix );
/***
int nCount = asResultArray.Count;
for (int i = 1; i < nCount; i++)
{
string sTmpData = asResultArray[i].ToString();
if (sTmpData.Length > 0)
{
if (sTmpData[0] == ')' ||
(sTmpData.IndexOf(IMAP_SERVER_RESPONSE_OK) != -1))
{
break;
}
else
sData += sTmpData;
}
}****/
}
else
throw new ImapException(ImapException.ImapErrorEnum.IMAP_ERR_FETCHMSG, sCommandSuffix );
}
catch (ImapException e)
{
LogOut();
throw e;
}
}