/// <summary> /// Sends message by using specified smart host. /// </summary> /// <param name="localHost">Host name which is reported to SMTP server. Value null means local computer name is used.</param> /// <param name="host">Host name or IP address.</param> /// <param name="port">Host port.</param> /// <param name="security">Specifies connection security.</param> /// <param name="userName">SMTP server user name. This value may be null, then authentication not used.</param> /// <param name="password">SMTP server password.</param> /// <param name="from">Sender email what is reported to SMTP server.</param> /// <param name="to">Recipients email addresses.</param> /// <param name="message">Raw message to send.</param> /// <exception cref="ArgumentNullException">Is raised when argument <b>host</b>,<b>from</b>,<b>to</b> or <b>stream</b> is null.</exception> /// <exception cref="ArgumentException">Is raised when any of the method arguments has invalid value.</exception> /// <exception cref="SMTP_ClientException">Is raised when SMTP server returns error.</exception> public static void QuickSendSmartHost(string localHost,string host,int port,TcpClientSecurity security,string userName,string password,string from,string[] to,Stream message) { if(host == null){ throw new ArgumentNullException("host"); } if(host == ""){ throw new ArgumentException("Argument 'host' value may not be empty."); } if(port < 1){ throw new ArgumentException("Argument 'port' value must be >= 1."); } if(from == null){ throw new ArgumentNullException("from"); } if(from != "" && !SMTP_Utils.IsValidAddress(from)){ throw new ArgumentException("Argument 'from' has invalid value."); } if(to == null){ throw new ArgumentNullException("to"); } if(to.Length == 0){ throw new ArgumentException("Argument 'to' must contain at least 1 recipient."); } foreach(string t in to){ if(!SMTP_Utils.IsValidAddress(t)){ throw new ArgumentException("Argument 'to' has invalid value '" + t + "'."); } } if(message == null){ throw new ArgumentNullException("message"); } using(SMTP_Client smtp = new SMTP_Client()){ smtp.Connect(host,port,security == TcpClientSecurity.SSL); if(security == TcpClientSecurity.TLS || (security == TcpClientSecurity.UseTlsIfSupported && smtp.SupportsCapability(SMTP_ServiceExtensions.STARTTLS))){ smtp.StartTLS(); } smtp.EhloHelo(localHost != null ? localHost : Dns.GetHostName()); if(!string.IsNullOrEmpty(userName)){ smtp.Auth(smtp.AuthGetStrongestMethod(userName,password)); } smtp.MailFrom(from,-1); foreach(string t in to){ smtp.RcptTo(t); } smtp.SendMessage(message); } }