예제 #1
0
        public void StartTls(string host)
        {
            SetupCommandTimeout();

            if (!SupportedCommands.Contains(SmtpCommands.Starttls))//если возможно передача данных по защищенному протоколу
            {
                throw new SmtpException("Not supported");
            }

            var reply = SendCommand(SmtpCommands.Starttls);

            if (reply.Code != SmtpReplyCode.ServiceReady)
            {
                throw new SmtpException();
            }

            var tls = _tlsProvider.AuthenticateAsClient(_stream, host);

            _stream = tls;
            _reader = new SmtpControlStreamReader(tls);
        }
예제 #2
0
        public void Connect(string host, int port)
        {
            if (Proxy != null)
            {
                Proxy.ConnectTimeout = ConnectTimeout;
                Proxy.ReadTimeout    = ReadTimeout;
                Proxy.WriteTimeout   = WriteTimeout;
                _tcpClient           = Proxy.CreateConnection(host, port);
            }
            else
            {
                _tcpClient = new TcpClient(AddressFamily.InterNetwork);//создание подключения по схеме адресации IP-адрес версии 4.
                _tcpClient.Connect(host, port);
            }

            _stream = _tcpClient.GetStream();//получаем ответ с сервера

            if (ReadTimeout >= 0)
            {
                _tcpClient.ReceiveTimeout = ReadTimeout;
            }
            if (WriteTimeout >= 0)
            {
                _tcpClient.SendTimeout = WriteTimeout;
            }

            _reader = new SmtpControlStreamReader(_stream);

            SetupCommandTimeout();

            var greetingReply = _reader.ReadServerReply();

            if (greetingReply.Code != SmtpReplyCode.ServiceReady)//если отчет положительный ,то продолжаем работу
            {
                throw new SmtpException();
            }

            Greeting = greetingReply.Message;
        }