Пример #1
0
        ContentEncoding GetFinalEncoding(MimePart part)
        {
            if ((Capabilities & SmtpCapabilities.BinaryMime) != 0)
            {
                // no need to re-encode...
                return(part.ContentTransferEncoding);
            }

            if ((Capabilities & SmtpCapabilities.EightBitMime) != 0)
            {
                switch (part.ContentTransferEncoding)
                {
                case ContentEncoding.Default:
                case ContentEncoding.Binary:
                    break;

                default:
                    // all other Content-Transfer-Encodings are safe to transmit...
                    return(part.ContentTransferEncoding);
                }
            }

            switch (part.ContentTransferEncoding)
            {
            case ContentEncoding.EightBit:
            case ContentEncoding.Default:
            case ContentEncoding.Binary:
                break;

            default:
                // all other Content-Transfer-Encodings are safe to transmit...
                return(part.ContentTransferEncoding);
            }

            ContentEncoding encoding;

            if ((Capabilities & SmtpCapabilities.BinaryMime) != 0)
            {
                encoding = part.GetBestEncoding(EncodingConstraint.None);
            }
            else if ((Capabilities & SmtpCapabilities.EightBitMime) != 0)
            {
                encoding = part.GetBestEncoding(EncodingConstraint.EightBit);
            }
            else
            {
                encoding = part.GetBestEncoding(EncodingConstraint.SevenBit);
            }

            if (encoding == ContentEncoding.SevenBit)
            {
                return(encoding);
            }

            part.ContentTransferEncoding = encoding;

            return(encoding);
        }
Пример #2
0
        public void TestPrepare()
        {
            using (var content = new MemoryStream(new byte[64], false)) {
                var part = new MimePart("application/octet-stream")
                {
                    Content = new MimeContent(content)
                };

                var encoding = part.GetBestEncoding(EncodingConstraint.SevenBit);

                Assert.AreEqual(ContentEncoding.Base64, encoding, "GetBestEncoding");

                part.Prepare(EncodingConstraint.SevenBit);

                Assert.AreEqual(ContentEncoding.Base64, part.ContentTransferEncoding, "Prepare #1");

                // now make sure that calling Prepare() again doesn't change anything

                part.Prepare(EncodingConstraint.SevenBit);

                Assert.AreEqual(ContentEncoding.Base64, part.ContentTransferEncoding, "Prepare #2");

                part.ContentTransferEncoding = ContentEncoding.Binary;
                part.Prepare(EncodingConstraint.None);

                Assert.AreEqual(ContentEncoding.Binary, part.ContentTransferEncoding, "Prepare #3");

                part.Prepare(EncodingConstraint.SevenBit);

                Assert.AreEqual(ContentEncoding.Base64, part.ContentTransferEncoding, "Prepare #4");
            }
        }