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

GetHeader() private method

Get the header for specific partNumber and Message UID
private GetHeader ( string sMessageUid, string sPartNumber, ArrayList asMessageHeader ) : void
sMessageUid string Unique Identifier of message
sPartNumber string Message part number
asMessageHeader System.Collections.ArrayList Return array
return void
        void GetHeader(string sMessageUid, string sPartNumber, ArrayList asMessageHeader)
        {
            asMessageHeader.Clear();
            ImapResponseEnum eImapResponse = ImapResponseEnum.IMAP_SUCCESS_RESPONSE;
            string sCommandSuffix = "";
            if (sPartNumber == "0")
            {
                sCommandSuffix = sMessageUid + " " + "BODY[HEADER]" ;
            }
            else
            {
                sCommandSuffix = sMessageUid + " " + "BODY[" + sPartNumber + ".MIME]";
            }
            string sCommandString = IMAP_UIDFETCH_COMMAND + " " + sCommandSuffix + IMAP_COMMAND_EOL ;

            try
            {
                //-----------------------
                // SEND SEARCH REQUEST
                ArrayList asResultArray = new ArrayList();
                eImapResponse = SendAndReceive(sCommandString, ref asResultArray);
                if (eImapResponse == ImapResponseEnum.IMAP_SUCCESS_RESPONSE)
                {
                    //-------------------------
                    // PARSE RESPONSE
                    string sKey = "";
                    string sValue = "";
                    string sLastLine = IMAP_SERVER_RESPONSE_OK;
                    foreach (string sLine in asResultArray)
                    {
                        if (sLine.Length <= 0 ||
                            sLine.StartsWith(IMAP_UNTAGGED_RESPONSE_PREFIX) ||
                            sLine == ")" )
                        {
                            continue;
                        }
                        else if(sLine.StartsWith(sLastLine))
                        {
                            break;

                        }
                        int nPos = sLine.IndexOf(" ");
                        if (nPos != -1)
                        {
                            string sTmpLine = sLine.Substring(0, nPos);
                            nPos = sTmpLine.IndexOf(":");
                        }
                        if (nPos != -1)
                        {
                            if (sKey.Length > 0 )
                            {
                                asMessageHeader.Add(sKey);
                                asMessageHeader.Add(sValue);
                            }
                            sKey = sLine.Substring(0, nPos).Trim();
                            sValue = sLine.Substring(nPos + 1).Trim();
                        }
                        else
                        {
                            sValue += sLine.Trim();
                        }
                    }
                    if (sKey.Length > 0 )
                    {
                        asMessageHeader.Add(sKey);
                        asMessageHeader.Add(sValue);
                    }

                }
                else
                    throw new ImapException(ImapException.ImapErrorEnum.IMAP_ERR_FETCHMSG, sCommandSuffix );
            }
            catch (ImapException e)
            {
                LogOut();
                throw e;
            }
        }