Exemple #1
0
        /// <summary>
        /// Decode body of a MimeEntity
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        /// <exception cref="MimeException"></exception>
        public static StringSegment DecodeBody(MimeEntity message)
        {
            StringSegment    innerMessageText = message.Body.SourceText;
            TransferEncoding encoding         = message.GetTransferEncoding();

            switch (encoding)
            {
            case TransferEncoding.QuotedPrintable:
                string decodedText = QuotedPrintableDecoder.Decode(innerMessageText);
                innerMessageText = new StringSegment(decodedText);
                break;

            case TransferEncoding.Base64:
                byte[] bytes         = Convert.FromBase64String(innerMessageText.ToString());
                string textFromBytes = Encoding.ASCII.GetString(bytes);
                innerMessageText = new StringSegment(textFromBytes);
                break;

                //
                // Case UUEncoding
                // Not supported.
                // TransferEncoding is a System.Net.Mime type without support for UUEncoding
                // Code would need to be refactored to accomodate.
                //
            }

            return(innerMessageText);
        }
Exemple #2
0
        internal override void AppendSourceText(StringSegment segment)
        {
            if (!this.SourceText.IsNull)
            {
                //
                // Header already has text. We need to unfold the new text in...
                //
                StringSegment unfoldedLine = MimeParser.SkipWhitespace(segment);
                if (unfoldedLine.IsEmpty)
                {
                    throw new MimeException(MimeError.InvalidHeader);
                }
                base.AppendText(unfoldedLine.ToString());
            }

            base.AppendSourceText(segment);
        }