public static string ConstructBodyStructure(Mail_Message message, bool bodystructure)
 {
     if (bodystructure)
     {
         return("BODYSTRUCTURE " + IMAP_BODY.ConstructParts(message, bodystructure));
     }
     return("BODY " + IMAP_BODY.ConstructParts(message, bodystructure));
 }
        private static string ConstructParts(MIME_Entity entity, bool bodystructure)
        {
            MIME_Encoding_EncodedWord mIME_Encoding_EncodedWord = new MIME_Encoding_EncodedWord(MIME_EncodedWordEncoding.B, Encoding.UTF8);

            mIME_Encoding_EncodedWord.Split = false;
            StringBuilder stringBuilder = new StringBuilder();

            if (entity.Body is MIME_b_Multipart)
            {
                stringBuilder.Append("(");
                foreach (MIME_Entity entity2 in ((MIME_b_Multipart)entity.Body).BodyParts)
                {
                    stringBuilder.Append(IMAP_BODY.ConstructParts(entity2, bodystructure));
                }
                if (entity.ContentType != null && entity.ContentType.SubType != null)
                {
                    stringBuilder.Append(" \"" + entity.ContentType.SubType + "\"");
                }
                else
                {
                    stringBuilder.Append(" NIL");
                }
                stringBuilder.Append(")");
            }
            else
            {
                stringBuilder.Append("(");
                if (entity.ContentType != null && entity.ContentType.Type != null)
                {
                    stringBuilder.Append("\"" + entity.ContentType.Type + "\"");
                }
                else
                {
                    stringBuilder.Append("NIL");
                }
                if (entity.ContentType != null && entity.ContentType.SubType != null)
                {
                    stringBuilder.Append(" \"" + entity.ContentType.SubType + "\"");
                }
                else
                {
                    stringBuilder.Append(" NIL");
                }
                if (entity.ContentType != null)
                {
                    if (entity.ContentType.Parameters.Count > 0)
                    {
                        stringBuilder.Append(" (");
                        bool flag = true;
                        foreach (MIME_h_Parameter mIME_h_Parameter in entity.ContentType.Parameters)
                        {
                            if (flag)
                            {
                                flag = false;
                            }
                            else
                            {
                                stringBuilder.Append(" ");
                            }
                            stringBuilder.Append(string.Concat(new string[]
                            {
                                "\"",
                                mIME_h_Parameter.Name,
                                "\" \"",
                                mIME_Encoding_EncodedWord.Encode(mIME_h_Parameter.Value),
                                "\""
                            }));
                        }
                        stringBuilder.Append(")");
                    }
                    else
                    {
                        stringBuilder.Append(" NIL");
                    }
                }
                else
                {
                    stringBuilder.Append(" NIL");
                }
                string contentID = entity.ContentID;
                if (contentID != null)
                {
                    stringBuilder.Append(" \"" + mIME_Encoding_EncodedWord.Encode(contentID) + "\"");
                }
                else
                {
                    stringBuilder.Append(" NIL");
                }
                string contentDescription = entity.ContentDescription;
                if (contentDescription != null)
                {
                    stringBuilder.Append(" \"" + mIME_Encoding_EncodedWord.Encode(contentDescription) + "\"");
                }
                else
                {
                    stringBuilder.Append(" NIL");
                }
                if (entity.ContentTransferEncoding != null)
                {
                    stringBuilder.Append(" \"" + mIME_Encoding_EncodedWord.Encode(entity.ContentTransferEncoding) + "\"");
                }
                else
                {
                    stringBuilder.Append(" \"7bit\"");
                }
                if (entity.Body is MIME_b_SinglepartBase)
                {
                    stringBuilder.Append(" " + ((MIME_b_SinglepartBase)entity.Body).EncodedData.Length.ToString());
                }
                else
                {
                    stringBuilder.Append(" 0");
                }
                if (entity.Body is MIME_b_MessageRfc822)
                {
                    stringBuilder.Append(" " + IMAP_Envelope.ConstructEnvelope(((MIME_b_MessageRfc822)entity.Body).Message));
                }
                if (entity.Body is MIME_b_Text)
                {
                    long             num = 0L;
                    StreamLineReader streamLineReader = new StreamLineReader(new MemoryStream(((MIME_b_SinglepartBase)entity.Body).EncodedData));
                    for (byte[] array = streamLineReader.ReadLine(); array != null; array = streamLineReader.ReadLine())
                    {
                        num += 1L;
                    }
                    stringBuilder.Append(" " + num.ToString());
                }
                stringBuilder.Append(")");
            }
            return(stringBuilder.ToString());
        }