Esempio n. 1
0
        public void UnixAndMacCRLF()
        {
            QPEncoder qpencoder = QPEncoder.GetInstance();

            Assert.AreEqual("123\r\n456\r\n789", qpencoder.EncodeString("123\r456\r789\r", System.Text.Encoding.GetEncoding("iso-8859-1")));
            Assert.AreEqual("123\r\n456\r\n789", qpencoder.EncodeString("123\n456\n789\n", System.Text.Encoding.GetEncoding("iso-8859-1")));
        }
Esempio n. 2
0
        public void EndOfLineSpacesTest()
        {
            QPEncoder qpencoder = QPEncoder.GetInstance();

            Assert.AreEqual("123 456  7890=20=20=20=20=20", qpencoder.EncodeString("123 456  7890     ", System.Text.Encoding.GetEncoding("iso-8859-1")));
            Assert.AreEqual("=20=20=20=20=20", qpencoder.EncodeString("     ", System.Text.Encoding.GetEncoding("iso-8859-1")));
            Assert.AreEqual("123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456=\r\n7890=20=20=20", qpencoder.EncodeString("123456789 123456789 123456789 123456789 123456789 123456789 123456789 1234567890   ", System.Text.Encoding.GetEncoding("iso-8859-1")));
            Assert.AreEqual("123456789 123456789 123456789 123456789 123456789 123456789 123456789=\r\n=20=20=20=20=20=20=20=20=20=20=20", qpencoder.EncodeString("123456789 123456789 123456789 123456789 123456789 123456789 123456789           ", System.Text.Encoding.GetEncoding("iso-8859-1")));
            Assert.AreEqual("123456789 123456789 123456789 123456789 123456789 123456789 123456789=\r\n=09=09=09=09=09=09=09=09=09=09=09", qpencoder.EncodeString("123456789 123456789 123456789 123456789 123456789 123456789 123456789											", System.Text.Encoding.GetEncoding("iso-8859-1")));
        }
Esempio n. 3
0
        public void SimpleTest()
        {
            //String setofchars=Get256Chars();
            String        setofchars = "" + (char)0x01 + (char)0x02;
            QPEncoder     qpencoder  = QPEncoder.GetInstance();
            StringReader  sr         = new StringReader(setofchars);
            StringBuilder sb         = new StringBuilder();
            StringWriter  sw         = new StringWriter(sb);

            qpencoder.Encode(sr, sw, System.Text.Encoding.GetEncoding("iso-8859-1"));
            Assert.AreEqual("=01=02", sb.ToString());
        }
Esempio n. 4
0
        public void HeaderEncodingTest()
        {
            QPEncoder qpencoder = QPEncoder.GetInstance();

            Assert.AreEqual("=?iso-8859-1?Q?hello=F8=E6=F4?=", qpencoder.EncodeHeaderString("Test", "helloøæô", System.Text.Encoding.GetEncoding("iso-8859-1"), false));
            Assert.AreEqual("=?iso-8859-1?Q?hello=20there=20=F8=E6=F4?=", qpencoder.EncodeHeaderString("Test", "hello there øæô", System.Text.Encoding.GetEncoding("iso-8859-1"), false));
            Assert.AreEqual("hello there", qpencoder.EncodeHeaderString("Test", "hello there", System.Text.Encoding.GetEncoding("iso-8859-1"), false));
            Assert.AreEqual("=?iso-8859-1?Q?hello=20there?=", qpencoder.EncodeHeaderString("Test", "hello there", System.Text.Encoding.GetEncoding("iso-8859-1"), true));
            Assert.AreEqual("=?iso-8859-1?Q?TSpecials=20Equals=20=3D=20QuestionMark=3FEnd?=", qpencoder.EncodeHeaderString("Test", "TSpecials Equals = QuestionMark?End", System.Text.Encoding.GetEncoding("iso-8859-1"), true));
            Assert.AreEqual("=?iso-8859-1?Q?en=20to,=20sn=F8r=20min=20sko,=20tre=20fire=20kom=20E?=\r\n\t=?iso-8859-1?Q?lvire,=20fem=20seks=20tegn=20en=20heks,=20sju=20=E5tte?=\r\n\t=?iso-8859-1?Q?=20ris=20til=20en=20rotte?=", qpencoder.EncodeHeaderString("Test", "en to, snør min sko, tre fire kom Elvire, fem seks tegn en heks, sju åtte ris til en rotte",
                                                                                                                                                                                                                                                                System.Text.Encoding.GetEncoding("iso-8859-1"), true));

            Assert.AreEqual("=?koi8-r?Q?n=CE=C5=D3=CB=CF=CC=D8=CB=CF=20=D3=D4=D2=CF=CB=20=D0=CF?=\r\n\t=?koi8-r?Q?=20=D2=D5=D3=D3=CB=C9=3F?=", qpencoder.EncodeHeaderString("Test", "nнесколько строк по русски?", System.Text.Encoding.GetEncoding("koi8-r"), true));
        }
Esempio n. 5
0
        public void LineLengthTest()
        {
            String line           = "12345678901234567890123456789012345678901234567890123456789012345678901234567890";
            String expectedresult = "1234567890123456789012345678901234567890123456789012345678901234567890123456=\r\n7890";

            QPEncoder     qpencoder = QPEncoder.GetInstance();
            StringReader  sr        = new StringReader(line);
            StringBuilder sb        = new StringBuilder();
            StringWriter  sw        = new StringWriter(sb);

            qpencoder.Encode(sr, sw, System.Text.Encoding.GetEncoding("iso-8859-1"));
            Assert.AreEqual(expectedresult, sb.ToString());

            Assert.AreEqual(expectedresult, qpencoder.EncodeString(line, System.Text.Encoding.GetEncoding("iso-8859-1")));
        }
Esempio n. 6
0
        public void Test256Chars()
        {
            QPEncoder qpencoder = QPEncoder.GetInstance();

            String expected = "=00=01=02=03=04=05=06=07=08=09\r\n" +
                              "=0B=0C\r\n" +
                              "=0E=0F=10=11=12=13=14=15=16=17=18=19=1A=1B=1C=1D=1E=1F !\"#$%&'()*+,-./012345=\r\n" +
                              "6789:;<=3D>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~=\r\n" +
                              "=7F=80=81=82=83=84=85=86=87=88=89=8A=8B=8C=8D=8E=8F=90=91=92=93=94=95=96=97=98=\r\n" +
                              "=99=9A=9B=9C=9D=9E=9F=A0=A1=A2=A3=A4=A5=A6=A7=A8=A9=AA=AB=AC=AD=AE=AF=B0=B1=B2=\r\n" +
                              "=B3=B4=B5=B6=B7=B8=B9=BA=BB=BC=BD=BE=BF=C0=C1=C2=C3=C4=C5=C6=C7=C8=C9=CA=CB=CC=\r\n" +
                              "=CD=CE=CF=D0=D1=D2=D3=D4=D5=D6=D7=D8=D9=DA=DB=DC=DD=DE=DF=E0=E1=E2=E3=E4=E5=E6=\r\n" +
                              "=E7=E8=E9=EA=EB=EC=ED=EE=EF=F0=F1=F2=F3=F4=F5=F6=F7=F8=F9=FA=FB=FC=FD=FE=FF";

            Assert.AreEqual(256, Get256Chars().Length);
            Assert.AreEqual(expected, qpencoder.EncodeString(Get256Chars(), System.Text.Encoding.GetEncoding("iso-8859-1")));
        }
Esempio n. 7
0
        /// <summary>
        /// Decodes a "Mime word" encoded string
        /// </summary>
        /// <param name="code">A mime word encoded string</param>
        /// <returns>The decoded string</returns>
        /// <example>
        /// <code>
        /// MimeWordDecoder dec = new MimeWordDecoder ();
        ///
        /// String subject = dec.DecodeWord ("=?iso-8859-1?q?Youpi=20it=20work?=");
        /// Console.Out.Writeline (subject);
        /// </code>
        /// Output:
        /// Youpi it work
        /// </example>
        public static string DecodeWord(string code)
        {
            Regex r = new Regex(@"=\?(.*)\?([bqBQ])\?(.*)\?=");
            Match m = r.Match(code);

            if (!m.Success)
            {
                return(code);                  // this is not a "Mime Word" encoded text
            }
            string CharsetString  = m.Result("$1");
            string EncodingString = m.Result("$2");
            string Src            = m.Result("$3");
            string Text           = null;

            EncodingIdentifier EncodingId;

            // search encoding
            if (EncodingString == "b" ||
                EncodingString == "B")
            {
                EncodingId = EncodingIdentifier.Base64;
            }
            else if (EncodingString == "q" ||
                     EncodingString == "Q")
            {
                EncodingId = EncodingIdentifier.QuotedPrintable;
            }
            else
            {
                return(code);                  // invalid encoding
            }
            // decode the string
            switch (EncodingId)
            {
            case EncodingIdentifier.QuotedPrintable:
                Text = QPEncoder.Decode(Src, CharsetString);
                break;

            case EncodingIdentifier.Base64:
                Text = Base64Decode(Src, CharsetString);
                break;
            }

            return(Text);
        }
Esempio n. 8
0
        /// <summary>
        /// Encodes a string in "Mime Word"
        /// </summary>
        /// <param name="Src">The string to encode</param>
        /// <param name="Encoding">The string charset Encoding</param>
        /// <param name="TransfertEncoding">The transfert encoding</param>
        /// <param name="Maxlength">Maximum number of char beetween 2 CRLF</param>
        ///
        /// <returns>A MimeWord encoded string</returns>
        public static string Encode(string Src, System.Text.Encoding Encoding, EncodingIdentifier TransfertEncoding, int Maxlength)
        {
            StringBuilder st = new StringBuilder(Src.Length);

            switch (TransfertEncoding)
            {
            case EncodingIdentifier.QuotedPrintable:
            {
                string suffix = "?=";
                string prefix = "=?" + Encoding.BodyName + "?q?";
                int    len    = prefix.Length + suffix.Length;

                st.Append(prefix);
                for (int i = 0; i < Src.Length; i++)
                {
                    string tmp = QPEncoder.Encode(Src[i], Encoding);
                    if (len + tmp.Length >= Maxlength)
                    {
                        st.AppendFormat("{0}\r\n", suffix);
                        len = prefix.Length + suffix.Length;
                        st.Append(prefix);
                    }
                    st.Append(tmp);
                    len += tmp.Length;
                }
                st.Append("?=");
            }
            break;

            case EncodingIdentifier.Base64:

                st.AppendFormat("=?{0}?b?{1}?=",
                                Encoding.BodyName,
                                MimeEncoder.StringBase64(Src, Encoding, 78));

                break;

            default:
                throw (new ArgumentOutOfRangeException("TransfertEncoding", TransfertEncoding, "Invalid transfert identifier"));
            }

            return(st.ToString());
        }