/// <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>(); }
/// <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(); } }
/// <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>(); }
/// <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(); }