public void Dispose()
        {
            Console.WriteLine("[SmtpBeastServer::Dispose]");
            lock (this)
            {
                if (null != _networkServerConnection)
                {
                    try
                    {
                        Console.WriteLine("[SmtpBeastServer::Dispose]  StopListeningForConnections");
                        if (_networkServerConnection.IsListening)
                        {
                            _networkServerConnection.StopListeningForConnections();
                        }
                    }
                    catch (Exception exception)
                    {
                        Console.WriteLine("Caught Exception in SmtpBeastServer::Dispose:\n{0}", exception);
                    }
                    finally
                    {
                        _networkServerConnection = null;
                    }
                }
            }

            Console.WriteLine("[SmtpBeastServer::Dispose]  Disposed");
        }
        public SmtpBeastServer(SmtpBeastServerConfig serverConfig, INetworkServerConnection networkServerConnection = null)
        {
            if (null == serverConfig)
                throw new ArgumentNullException(nameof(serverConfig));

            ServerConfig = serverConfig;
            _networkServerConnection = networkServerConnection ?? new SocketNetworkServerConnection();
            IsStarted = false;
        }
        private void networkServerConnection_ConnectionAccepted(INetworkServerConnection parent, INetworkClientConnection clientConnection)
        {
            Console.WriteLine("[SmtpBeastServer::networkServerConnection_ConnectionAccepted]  Connection Accepted - Sending Greeting");

            clientConnection.Send(new SmtpServerMessageBuilder().Greeting());

            clientConnection.Close();

            IsStarted = false;
        }