public void TestQuotedPrintableDecode() { const string input = "This is an ordinary text message in which my name (=ED=E5=EC=F9 =EF=E1 =E9=EC=E8=F4=F0)\nis in Hebrew (=FA=E9=F8=E1=F2)."; const string expected = "This is an ordinary text message in which my name (םולש ןב ילטפנ)\nis in Hebrew (תירבע)."; var encoding = Encoding.GetEncoding("iso-8859-8"); var decoder = new QuotedPrintableDecoder(); var output = new byte[4096]; string actual; byte[] buf; int n; Assert.AreEqual(ContentEncoding.QuotedPrintable, decoder.Encoding); buf = Encoding.ASCII.GetBytes(input); n = decoder.Decode(buf, 0, buf.Length, output); actual = encoding.GetString(output, 0, n); Assert.AreEqual(expected, actual); encoding = CharsetUtils.Latin1; for (int i = 0; i < qpEncodedPatterns.Length; i++) { decoder.Reset(); buf = encoding.GetBytes(qpEncodedPatterns[i]); n = decoder.Decode(buf, 0, buf.Length, output); actual = encoding.GetString(output, 0, n); Assert.AreEqual(qpDecodedPatterns[i], actual, "Failed to decode qpEncodedPatterns[{0}]", i); } }
public void DecodeStringTest() { string encodedText = MIMERTests.Strings.QuotedPrintableEncoded; string decodedText = Encoding.Default.GetString(m_Decoder.Decode(ref encodedText)); StringAssert.IsMatch(MIMERTests.Strings.QuotedPrintableDecoded, decodedText); }
static StringSegment DecodeBody(Message message) { StringSegment innerMessageText = message.Body.SourceText; TransferEncoding encoding = message.GetTransferEncoding(); switch (encoding) { default: throw new MimeException(MimeError.TransferEncodingNotSupported); case TransferEncoding.SevenBit: break; // Nothing to do 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; } return(innerMessageText); }
public void TestEmoji() { var expected = "<html><body>😱<br/></body></html>"; var buffer = Encoding.ASCII.GetBytes("=F0=9F=98=B1"); var decoder = new QuotedPrintableDecoder(); var length = decoder.EstimateOutputLength(buffer.Length); var decoded = new byte[length]; var n = decoder.Decode(buffer, 0, buffer.Length, decoded); var emoji = Encoding.UTF8.GetString(decoded, 0, n); var converter = new TextToHtml(); var result = converter.Convert(emoji); Assert.AreEqual(expected, result); }
public void TestQuotedPrintableDecode() { const string input = "This is an ordinary text message in which my name (=ED=E5=EC=F9 =EF=E1 =E9=EC=E8=F4=F0)\nis in Hebrew (=FA=E9=F8=E1=F2)."; const string expected = "This is an ordinary text message in which my name (םולש ןב ילטפנ)\nis in Hebrew (תירבע)."; var encoding = Encoding.GetEncoding("iso-8859-8"); var decoder = new QuotedPrintableDecoder(); var output = new byte[4096]; var buf = Encoding.ASCII.GetBytes(input); int n = decoder.Decode(buf, 0, buf.Length, output); var actual = encoding.GetString(output, 0, n); Assert.AreEqual(expected, actual); }
public static Byte[] DecodeQuoted(String data) { Byte[] buffer = Encoding.ASCII.GetBytes(data); QuotedPrintableDecoder decoder = new QuotedPrintableDecoder(); Byte[] output = new Byte[decoder.EstimateOutputLength(buffer.Length)]; Int32 length = decoder.Decode(buffer, 0, buffer.Length, output); MemoryStream stream = new MemoryStream(output, 0, length); return(stream.ToArray()); }
public void TestQuotedPrintableDecodeInvalidSoftBreak() { const string input = "This is an invalid=\rsoft break."; const string expected = "This is an invalid=\rsoft break."; var decoder = new QuotedPrintableDecoder(); var output = new byte[1024]; string actual; byte[] buf; int n; Assert.AreEqual(ContentEncoding.QuotedPrintable, decoder.Encoding); buf = Encoding.ASCII.GetBytes(input); n = decoder.Decode(buf, 0, buf.Length, output); actual = Encoding.ASCII.GetString(output, 0, n); Assert.AreEqual(expected, actual); }
public void TestQuotedPrintableDecodePatterns() { var decoder = new QuotedPrintableDecoder(); var encoding = CharsetUtils.Latin1; var output = new byte[4096]; string actual; byte[] buf; int n; for (int i = 0; i < qpEncodedPatterns.Length; i++) { decoder.Reset(); buf = encoding.GetBytes(qpEncodedPatterns[i]); n = decoder.Decode(buf, 0, buf.Length, output); actual = encoding.GetString(output, 0, n); Assert.AreEqual(qpDecodedPatterns[i], actual, "Failed to decode qpEncodedPatterns[{0}]", i); } }
protected byte[] DecodeQuotedPrintable(string input) { try { QuotedPrintableDecoder encoder = new QuotedPrintableDecoder(false); byte[] inputBytes = Encoding.UTF8.GetBytes(input); byte[] outputBytes = new byte[encoder.EstimateOutputLength(inputBytes.Length)]; int length = encoder.Decode(inputBytes, 0, inputBytes.Length, outputBytes); return(outputBytes.Take(length).ToArray()); } catch { return(null); } }
public void TestRoundTrip(int toCount, int ccCount, int bodyLength) { // Manually wrap the mail... MailMessage mail = MailMessageGenerator.GenerateRandomMail(toCount, ccCount, bodyLength); MailMessage wrappedMessage = MailMessageGenerator.WrappedMailMessage(mail); string wrappedMessageText = wrappedMessage.Serialize(); Message parsedMessage = null; Assert.DoesNotThrow(() => parsedMessage = Message.Load(wrappedMessageText)); Message extracted = null; Assert.DoesNotThrow(() => extracted = WrappedMessage.ExtractInner(parsedMessage)); string extractedBody = extracted.Body.Text; if (extracted.GetTransferEncoding() == TransferEncoding.QuotedPrintable) { extractedBody = QuotedPrintableDecoder.Decode(new StringSegment(extractedBody)); extractedBody = extractedBody.TrimEnd(); } Assert.True(extractedBody == mail.Body); }
public void TestQuotedPrintableEncodeFlush() { const string input = "This line ends with a space "; const string expected = "This line ends with a space=20=\n"; var encoder = new QuotedPrintableEncoder(); var decoder = new QuotedPrintableDecoder(); var output = new byte[1024]; string actual; byte[] buf; int n; Assert.AreEqual(ContentEncoding.QuotedPrintable, encoder.Encoding); buf = Encoding.ASCII.GetBytes(input); n = encoder.Flush(buf, 0, buf.Length, output); actual = Encoding.ASCII.GetString(output, 0, n); Assert.AreEqual(expected, actual); buf = Encoding.ASCII.GetBytes(expected); n = decoder.Decode(buf, 0, buf.Length, output); actual = Encoding.ASCII.GetString(output, 0, n); Assert.AreEqual(input, actual); }