/// <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); }
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); }