Beispiel #1
0
        public void TestStartTLS()
        {
            using (ShimsContext.Create())
            {
                var server      = new ShimSMTPServer();
                var settings    = new StubIReceiveSettings();
                var transaction = new SMTPTransaction(server, settings);

                var             args         = new CancelEventArgs();
                CancelEventArgs actualArgs   = null;
                object          actualSender = null;
                var             called       = false;

                transaction.OnStartTLS += (sender, eventArgs) =>
                {
                    called       = true;
                    actualSender = sender;
                    actualArgs   = eventArgs;
                };

                transaction.StartTLS(args);

                Assert.True(called);
                Assert.Same(transaction, actualSender);
                Assert.Same(args, actualArgs);
            }
        }
Beispiel #2
0
        public override SMTPResponse DoExecute(SMTPTransaction transaction, string parameters)
        {
            if (!string.IsNullOrEmpty(parameters))
            {
                return(new SMTPResponse(SMTPStatusCode.SyntaxError));
            }

            if (!transaction.Settings.EnableTLS)
            {
                return(new SMTPResponse(SMTPStatusCode.BadSequence)); // TODO: Check response code
            }

            if (transaction.TLSActive)
            {
                return(new SMTPResponse(SMTPStatusCode.BadSequence));
            }

            var args = new CancelEventArgs();

            transaction.StartTLS(args);

            if (args.Cancel)
            {
                return(new SMTPResponse(SMTPStatusCode.TLSNotAvailiable, "TLS not available due to temporary reason"));
            }

            return(new SMTPResponse(SMTPStatusCode.Ready, "Ready to start TLS"));
        }