Esempio n. 1
0
        public static string Decode(string literals, string transferEncoding, string charset)
        {
            Encoding targetEncoding;

            var value = charset.ToLower();

            switch (value)
            {
            case "cp1252":
                // Cp1252 is not recognized under this name
                charset = Charsets.Windows1252;
                break;

            case "x-unknown":
                charset = Charsets.Utf8;
                break;
            }

            try {
                // if this goes haywire
                targetEncoding = Encoding.GetEncoding(charset);
            } catch (ArgumentException) {
                // try this one
                targetEncoding = Encoding.UTF8;
            }

            switch (transferEncoding.ToLower())
            {
            case ContentTransferEncodings.QuotedPrintable: {
                return(QpConverter.FromQuotedPrintable(literals, targetEncoding));
            }

            case ContentTransferEncodings.Base64: {
                var bytes = Convert.FromBase64String(literals);
                return(targetEncoding.GetString(bytes));
            }

            default: {
                // no encoding
                return(literals);
            }
            }
        }
Esempio n. 2
0
        public static string Encode(string text, string transferEncoding, string charset, bool useBockText = true)
        {
            switch (transferEncoding)
            {
            case ContentTransferEncodings.QuotedPrintable: {
                var bytes = Encoding.UTF8.GetBytes(text);
                return(QpConverter.ToQuotedPrintableString(bytes));
            }

            case ContentTransferEncodings.None: {
                return(text);
            }

            default: {
                var bytes       = Encoding.UTF8.GetBytes(text);
                var encodedText = Convert.ToBase64String(bytes);
                return(useBockText ? encodedText.ToBlockText(76) : encodedText);
            }
            }
        }