Пример #1
0
        /// <summary>
        /// Create a new SMTP client for sending e-mails.
        /// </summary>
        /// <param name="RemoteHost"></param>
        /// <param name="RemotePort"></param>
        /// <param name="Login"></param>
        /// <param name="Password"></param>
        /// <param name="LocalDomain"></param>
        /// <param name="UseIPv4">Whether to use IPv4 as networking protocol.</param>
        /// <param name="UseIPv6">Whether to use IPv6 as networking protocol.</param>
        /// <param name="PreferIPv6">Prefer IPv6 (instead of IPv4) as networking protocol.</param>
        /// <param name="UseTLS">Whether Transport Layer Security should be used or not.</param>
        /// <param name="ValidateServerCertificate">A callback for validating the remote server certificate.</param>
        /// <param name="ConnectionTimeout">The timeout connecting to the remote service.</param>
        /// <param name="DNSClient">An optional DNS client used to resolve DNS names.</param>
        /// <param name="AutoConnect">Connect to the TCP service automatically on startup. Default is false.</param>
        /// <param name="CancellationToken"></param>
        public SMTPClient(String RemoteHost,
                          IPPort RemotePort,
                          String Login       = null,
                          String Password    = null,
                          String LocalDomain = null,
                          Boolean UseIPv4    = true,
                          Boolean UseIPv6    = false,
                          Boolean PreferIPv6 = false,
                          TLSUsage UseTLS    = TLSUsage.STARTTLS,
                          ValidateRemoteCertificateDelegate ValidateServerCertificate = null,
                          TimeSpan?ConnectionTimeout          = null,
                          DNSClient DNSClient                 = null,
                          Boolean AutoConnect                 = false,
                          CancellationToken?CancellationToken = null)

            : base(RemoteHost,
                   RemotePort,
                   UseIPv4,
                   UseIPv6,
                   PreferIPv6,
                   UseTLS,
                   ValidateServerCertificate,
                   ConnectionTimeout,
                   DNSClient,
                   AutoConnect,
                   CancellationToken)

        {
            this._Login              = Login;
            this._Password           = Password;
            this._LocalDomain        = (LocalDomain != null) ? LocalDomain : System.Net.Dns.GetHostName();
            this._UnknownAuthMethods = new List <String>();
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="RemoteHost"></param>
        /// <param name="RemotePort"></param>
        /// <param name="UseIPv4">Whether to use IPv4 as networking protocol.</param>
        /// <param name="UseIPv6">Whether to use IPv6 as networking protocol.</param>
        /// <param name="PreferIPv6">Prefer IPv6 (instead of IPv4) as networking protocol.</param>
        /// <param name="UseTLS">Whether Transport Layer Security should be used or not.</param>
        /// <param name="ValidateServerCertificate">A callback for validating the remote server certificate.</param>
        /// <param name="ConnectionTimeout">The timeout connecting to the remote service.</param>
        /// <param name="DNSClient">An optional DNS client used to resolve DNS names.</param>
        /// <param name="AutoConnect">Connect to the TCP service automatically on startup. Default is false.</param>
        /// <param name="CancellationToken"></param>
        public TCPClient(String RemoteHost,
                         IPPort RemotePort,
                         Boolean UseIPv4    = true,
                         Boolean UseIPv6    = false,
                         Boolean PreferIPv6 = false,
                         TLSUsage UseTLS    = TLSUsage.STARTTLS,
                         ValidateRemoteCertificateDelegate ValidateServerCertificate = null,
                         TimeSpan?ConnectionTimeout          = null,
                         DNSClient DNSClient                 = null,
                         Boolean AutoConnect                 = false,
                         CancellationToken?CancellationToken = null)


        {
            this._RemoteHost               = RemoteHost;
            this._RemotePort               = RemotePort;
            this.CancellationToken         = CancellationToken != null ? CancellationToken : new CancellationToken();
            this._UseIPv4                  = UseIPv4;
            this._UseIPv6                  = UseIPv6;
            this._PreferIPv6               = PreferIPv6;
            this._UseTLS                   = UseTLS;
            this.ValidateServerCertificate = ValidateServerCertificate != null
                                                  ? ValidateServerCertificate
                                                  : (TCPClient, Certificate, CertificateChain, PolicyErrors) => false;

            this._ConnectionTimeout = (ConnectionTimeout.HasValue)
                                                  ? ConnectionTimeout.Value
                                                  : TimeSpan.FromSeconds(60);

            this._DNSClient = (DNSClient == null)
                                                  ? new DNSClient(SearchForIPv6DNSServers: true)
                                                  : DNSClient;

            if (AutoConnect)
            {
                Connect();
            }
        }
Пример #3
0
 /// <summary>
 /// Create a new SMTP client for sending e-mails.
 /// </summary>
 /// <param name="RemoteHost"></param>
 /// <param name="RemotePort"></param>
 /// <param name="Login"></param>
 /// <param name="Password"></param>
 /// <param name="LocalDomain"></param>
 /// <param name="UseIPv4">Whether to use IPv4 as networking protocol.</param>
 /// <param name="UseIPv6">Whether to use IPv6 as networking protocol.</param>
 /// <param name="PreferIPv6">Prefer IPv6 (instead of IPv4) as networking protocol.</param>
 /// <param name="UseTLS">Whether Transport Layer Security should be used or not.</param>
 /// <param name="ValidateServerCertificate">A callback for validating the remote server certificate.</param>
 /// <param name="ConnectionTimeout">The timeout connecting to the remote service.</param>
 /// <param name="DNSClient">An optional DNS client used to resolve DNS names.</param>
 /// <param name="AutoConnect">Connect to the TCP service automatically on startup. Default is false.</param>
 /// <param name="CancellationToken"></param>
 public SMTPClient(String                             RemoteHost,
                   IPPort                             RemotePort,
                   String                             Login                      = null,
                   String                             Password                   = null,
                   String                             LocalDomain                = null,
                   Boolean                            UseIPv4                    = true,
                   Boolean                            UseIPv6                    = false,
                   Boolean                            PreferIPv6                 = false,
                   TLSUsage                           UseTLS                     = TLSUsage.STARTTLS,
                   ValidateRemoteCertificateDelegate  ValidateServerCertificate  = null,
                   TimeSpan?                          ConnectionTimeout          = null,
                   DNSClient                          DNSClient                  = null,
                   Boolean                            AutoConnect                = false,
                   CancellationToken?                 CancellationToken          = null)
     : base(RemoteHost,
            RemotePort,
            UseIPv4,
            UseIPv6,
            PreferIPv6,
            UseTLS,
            ValidateServerCertificate,
            ConnectionTimeout,
            DNSClient,
            AutoConnect,
            CancellationToken)
 {
     this._Login               = Login;
     this._Password            = Password;
     this._LocalDomain         = (LocalDomain != null) ? LocalDomain : System.Net.Dns.GetHostName();
     this._UnknownAuthMethods  = new List<String>();
 }
Пример #4
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="RemoteHost"></param>
        /// <param name="RemotePort"></param>
        /// <param name="UseIPv4">Whether to use IPv4 as networking protocol.</param>
        /// <param name="UseIPv6">Whether to use IPv6 as networking protocol.</param>
        /// <param name="PreferIPv6">Prefer IPv6 (instead of IPv4) as networking protocol.</param>
        /// <param name="UseTLS">Whether Transport Layer Security should be used or not.</param>
        /// <param name="ValidateServerCertificate">A callback for validating the remote server certificate.</param>
        /// <param name="ConnectionTimeout">The timeout connecting to the remote service.</param>
        /// <param name="DNSClient">An optional DNS client used to resolve DNS names.</param>
        /// <param name="AutoConnect">Connect to the TCP service automatically on startup. Default is false.</param>
        /// <param name="CancellationToken"></param>
        public TCPClient(String                             RemoteHost,
                         IPPort                             RemotePort,
                         Boolean                            UseIPv4                     = true,
                         Boolean                            UseIPv6                     = false,
                         Boolean                            PreferIPv6                  = false,
                         TLSUsage                           UseTLS                      = TLSUsage.STARTTLS,
                         ValidateRemoteCertificateDelegate  ValidateServerCertificate   = null,
                         TimeSpan?                          ConnectionTimeout           = null,
                         DNSClient                          DNSClient                   = null,
                         Boolean                            AutoConnect                 = false,
                         CancellationToken?                 CancellationToken           = null)
        {
            this._RemoteHost                = RemoteHost;
            this._RemotePort                = RemotePort;
            this.CancellationToken          = CancellationToken != null ? CancellationToken : new CancellationToken();
            this._UseIPv4                   = UseIPv4;
            this._UseIPv6                   = UseIPv6;
            this._PreferIPv6                = PreferIPv6;
            this._UseTLS                    = UseTLS;
            this.ValidateServerCertificate  = ValidateServerCertificate != null
                                                  ? ValidateServerCertificate
                                                  : (TCPClient, Certificate, CertificateChain, PolicyErrors) => false;

            this._ConnectionTimeout         = (ConnectionTimeout.HasValue)
                                                  ? ConnectionTimeout.Value
                                                  : TimeSpan.FromSeconds(60);

            this._DNSClient                 = (DNSClient == null)
                                                  ? new DNSClient(SearchForIPv6DNSServers: true)
                                                  : DNSClient;

            if (AutoConnect)
                Connect();
        }