Joshi.Utils.Imap.Imap.GetBody C# (CSharp) Method

GetBody() private method

Get the message body for specified part
private GetBody ( string sMessageUid, string sPartNumber, string &sData ) : void
sMessageUid string Message uid
sPartNumber string Body part
sData string
return void
        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;
            }
        }