/// <summary> /// Validates syntax and existence of the given address. /// </summary> /// <param name="address">The address to be validated.</param> /// <param name="dnsServers">Name Servers to be used for MX records search.</param> /// <returns>True if the address is valid, otherwise false.</returns> public static bool Validate(string address, ServerCollection dnsServers) { if (!ActiveUp.Net.Mail.Validator.ValidateSyntax(address)) { return(false); } else { string domain = address.Split('@')[1]; bool result; ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient(); smtp.SendTimeout = 15; smtp.ReceiveTimeout = 15; MxRecordCollection mxRecords = new MxRecordCollection(); try { #if !PocketPC mxRecords = ActiveUp.Net.Mail.Validator.GetMxRecords(domain, dnsServers); #else mxRecords = ActiveUp.Net.Mail.Validator.GetMxRecords(domain); #endif } catch { new System.Exception("Can't connect to DNS server."); } smtp.Connect(mxRecords.GetPrefered().Exchange); try { smtp.Ehlo(System.Net.Dns.GetHostName()); } catch { smtp.Helo(System.Net.Dns.GetHostName()); } if (smtp.Verify(address)) { result = true; } else { try { //smtp.MailFrom("postmaster@"+System.Net.Dns.GetHostName()); //smtp.MailFrom("*****@*****.**"); smtp.MailFrom(string.Format("postmaster@{0}", domain)); smtp.RcptTo(address); result = true; } catch { result = false; } } smtp.Disconnect(); return(result); } }
/// <summary> /// Sends the message using the specified host and port after authentication. /// </summary> /// <param name="messages">The message collection to be sent.</param> /// <param name="host">Host to be used to send the message.</param> /// <param name="username">Username to be used for the authentication process.</param> /// <param name="password">Password to be used for the authentication process.</param> /// <param name="mechanism">SASL mechanism to be used.</param> /// <param name="port">Port to be used to connect to the specified host.</param> /// <param name="errors">Reference to SmtpException object collection where errors occuring during the process will be stored.</param> /// <returns>Amount of messages successfully sent.</returns> public static int SendCollection(MessageCollection messages, string host, int port, string username, string password, SaslMechanism mechanism, ref SmtpExceptionCollection errors) { ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient(); smtp.Connect(host,port); try { smtp.Ehlo(System.Net.Dns.GetHostName()); } catch { smtp.Helo(System.Net.Dns.GetHostName()); } smtp.Authenticate(username,password,mechanism); int sent = 0; foreach(Message message in messages) { try { // Ensure that the mime part tree is built message.CheckBuiltMimePartTree(); if(message.From.Email!=string.Empty) smtp.MailFrom(message.From); else smtp.MailFrom(message.Sender); smtp.RcptTo(message.To); smtp.RcptTo(message.Cc); smtp.RcptTo(message.Bcc); smtp.Data(message.ToMimeString()); sent++; } catch(ActiveUp.Net.Mail.SmtpException ex) { errors.Add(ex); } } smtp.Disconnect(); return sent; }
/// <summary> /// Sends all messages using the specified host and port. /// </summary> /// <param name="messages">The message collection to be sent.</param> /// <param name="host">Address of the server to be used.</param> /// <param name="port">Port to be used.</param> /// <returns>Amount of messages successfully sent.</returns> /// <example> /// <code> /// C# /// /// Message message = new Message(); /// message.Subject = "Test"; /// message.From = new Address("*****@*****.**","John Doe"); /// message.To.Add("*****@*****.**","Mike Johns"); /// message.BodyText.Text = "Hello this is a test!"; /// /// Message message1 = new Message(); /// message1.Subject = "Hey David!"; /// message1.From = New Address("*****@*****.**","John Doe"); /// message1.To.Add("*****@*****.**","David Clark"); /// message1.BodyText.Text = "How you doing ?"; /// /// MessageCollection messages = new MessageCollection(); /// messages.Add(message); /// messages.Add(message1); /// /// SmtpClient.Send(messages,"mail.myhost.com",8504); /// /// VB.NET /// /// Dim message As New Message /// message.Subject = "Test" /// message.From = New Address("*****@*****.**","John Doe") /// message.To.Add("*****@*****.**","Mike Johns") /// message.BodyText.Text = "Hello this is a test!" /// /// Dim message1 As New Message /// message1.Subject = "Hey David!" /// message1.From = New Address("*****@*****.**","John Doe") /// message1.To.Add("*****@*****.**","David Clark") /// message1.BodyText.Text = "How you doing ?" /// /// Dim messages As New MessageCollection /// messages.Add(message) /// messages.Add(message1) /// /// SmtpClient.Send(messages,"mail.myhost.com",8504) /// /// JScript.NET /// /// var message:Message = new Message(); /// message.Subject = "Test"; /// message.From = new Address("*****@*****.**","John Doe"); /// message.To.Add("*****@*****.**","Mike Johns"); /// message.BodyText.Text = "Hello this is a test!"; /// /// var message1:Message = new Message(); /// message1.Subject = "Hey David!"; /// message1.From = New Address("*****@*****.**","John Doe"); /// message1.To.Add("*****@*****.**","David Clark"); /// message1.BodyText.Text = "How you doing ?"; /// /// var messages:MessageCollection = new MessageCollection(); /// messages.Add(message); /// messages.Add(message1); /// /// SmtpClient.Send(messages,"mail.myhost.com",8504); /// </code> /// </example> public static int SendCollection(MessageCollection messages, string host, int port) { ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient(); smtp.Connect(host,port); try { smtp.Ehlo(System.Net.Dns.GetHostName()); } catch { smtp.Helo(System.Net.Dns.GetHostName()); } int sent=0; foreach(Message message in messages) { try { // Ensure that the mime part tree is built message.CheckBuiltMimePartTree(); if(message.From.Email!=string.Empty) smtp.MailFrom(message.From); else smtp.MailFrom(message.Sender); smtp.RcptTo(message.To); smtp.RcptTo(message.Cc); smtp.RcptTo(message.Bcc); smtp.Data(message.ToMimeString()); sent++; } catch(ActiveUp.Net.Mail.SmtpException) { } } smtp.Disconnect(); return sent; }
/// <summary> /// Sends all messages using the specified host. /// </summary> /// <param name="servers">Servers to be used to send the message (in preference order).</param> /// <param name="messages">MessageCollection to be sent.</param> /// <param name="errors">Reference to SmtpException object collection where errors occuring during the process will be stored.</param> /// <returns>Amount of messages successfully sent.</returns> /// <example> /// <code> /// C# /// /// Message message = new Message(); /// message.Subject = "Test"; /// message.From = new Address("*****@*****.**","John Doe"); /// message.To.Add("*****@*****.**","Mike Johns"); /// message.BodyText.Text = "Hello this is a test!"; /// /// Message message1 = new Message(); /// message1.Subject = "Hey David!"; /// message1.From = New Address("*****@*****.**","John Doe"); /// message1.To.Add("*****@*****.**","David Clark"); /// message1.BodyText.Text = "How you doing ?"; /// /// MessageCollection messages = new MessageCollection(); /// messages.Add(message); /// messages.Add(message1); /// /// ServerCollection servers = new ServerCollection(); /// servers.Add("mail.myhost.com",25); /// servers.Add("mail2.myhost.com",25); /// /// SmtpClient.Send(messages,servers,myErrorCollection); /// /// VB.NET /// /// Dim message As New Message /// message.Subject = "Test" /// message.From = New Address("*****@*****.**","John Doe") /// message.To.Add("*****@*****.**","Mike Johns") /// message.BodyText.Text = "Hello this is a test!" /// /// Dim message1 As New Message /// message1.Subject = "Hey David!" /// message1.From = New Address("*****@*****.**","John Doe") /// message1.To.Add("*****@*****.**","David Clark") /// message1.BodyText.Text = "How you doing ?" /// /// Dim messages As New MessageCollection /// messages.Add(message) /// messages.Add(message1) /// /// Dim servers As New ServerCollection /// servers.Add("mail.myhost.com",25) /// servers.Add("mail2.myhost.com",25) /// /// SmtpClient.Send(messages,servers,myErrorCollection) /// /// JScript.NET /// /// var message:Message = new Message(); /// message.Subject = "Test"; /// message.From = new Address("*****@*****.**","John Doe"); /// message.To.Add("*****@*****.**","Mike Johns"); /// message.BodyText.Text = "Hello this is a test!"; /// /// var message1:Message = new Message(); /// message1.Subject = "Hey David!"; /// message1.From = New Address("*****@*****.**","John Doe"); /// message1.To.Add("*****@*****.**","David Clark"); /// message1.BodyText.Text = "How you doing ?"; /// /// var messages:MessageCollection = new MessageCollection(); /// messages.Add(message); /// messages.Add(message1); /// /// var servers:ServerCollection = new ServerCollection(); /// servers.Add("mail.myhost.com",25); /// servers.Add("mail2.myhost.com",25); /// /// SmtpClient.Send(messages,servers,myErrorCollection); /// </code> /// </example> public static int SendCollection(MessageCollection messages, ServerCollection servers, ref SmtpExceptionCollection errors) { ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient(); int sent=0; foreach(Message message in messages) { try { // Ensure that the mime part tree is built message.CheckBuiltMimePartTree(); for(int i=0;i<servers.Count;i++) { try { if (servers[i].ServerEncryptionType != EncryptionType.None) { #if !PocketPC smtp.ConnectSsl(servers[i].Host, servers[i].Port); #else smtp.Connect(servers[i].Host, servers[i].Port); #endif } else { smtp.Connect(servers[i].Host, servers[i].Port); } try { smtp.Ehlo(System.Net.Dns.GetHostName()); } catch { smtp.Helo(System.Net.Dns.GetHostName()); } if(servers[i].Username!=null && servers[i].Username.Length>0 && servers[i].Password!=null && servers[i].Password.Length>0) smtp.Authenticate(servers[i].Username,servers[i].Password,SaslMechanism.Login); if(message.From.Email!=string.Empty) smtp.MailFrom(message.From); else smtp.MailFrom(message.Sender); smtp.RcptTo(message.To); smtp.RcptTo(message.Cc); smtp.RcptTo(message.Bcc); smtp.Data(message.ToMimeString()); smtp.Disconnect(); sent++; break; } catch { continue; } } } catch(ActiveUp.Net.Mail.SmtpException ex) { errors.Add(ex); } } return sent; }
/// <summary> /// Sends the message using the specified host on the specified port. Secure SASL Authentication is performed according to the requested mechanism. /// </summary> /// <param name="message">The message to be sent.</param> /// <param name="host">The host to be used.</param> /// <param name="username">The username to be used for authentication.</param> /// <param name="password">The password to be used for authentication.</param> /// <param name="mechanism">SASL Mechanism to be used for authentication.</param> /// <param name="port">The port to be used.</param> /// <example> /// <code> /// C# /// /// Message message = new Message(); /// message.Subject = "Test"; /// message.From = new Address("*****@*****.**","John Doe"); /// message.To.Add("*****@*****.**","Mike Johns"); /// message.BodyText.Text = "Hello this is a test!"; /// /// SmtpClient.Send(message,"mail.myhost.com","jdoe1234","tanstaaf",SaslMechanism.CramMd5,8504); /// /// VB.NET /// /// Dim message As New Message /// message.Subject = "Test" /// message.From = New Address("*****@*****.**","John Doe") /// message.To.Add("*****@*****.**","Mike Johns") /// message.BodyText.Text = "Hello this is a test!" /// /// SmtpClient.Send(message,"mail.myhost.com","jdoe1234","tanstaaf",SaslMechanism.CramMd5,8504) /// /// JScript.NET /// /// var message:Message = new Message(); /// message.Subject = "Test"; /// message.From = new Address("*****@*****.**","John Doe"); /// message.To.Add("*****@*****.**","Mike Johns"); /// message.BodyText.Text = "Hello this is a test!"; /// /// SmtpClient.Send(message,"mail.myhost.com","jdoe1234","tanstaaf",SaslMechanism.CramMd5,8504); /// </code> /// </example> public static bool Send(Message message, string host, int port, string username, string password, SaslMechanism mechanism) { // Ensure that the mime part tree is built message.CheckBuiltMimePartTree(); ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient(); smtp.Connect(host,port); try { smtp.Ehlo(System.Net.Dns.GetHostName()); } catch { smtp.Helo(System.Net.Dns.GetHostName()); } smtp.Authenticate(username,password,mechanism); if(message.From.Email!=string.Empty) smtp.MailFrom(message.From); else smtp.MailFrom(message.Sender); smtp.RcptTo(message.To); smtp.RcptTo(message.Cc); smtp.RcptTo(message.Bcc); smtp.Data(message.ToMimeString()); smtp.Disconnect(); return true; }
public static bool SendSsl(Message message, string server, int port) { // Ensure that the mime part tree is built message.CheckBuiltMimePartTree(); ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient(); smtp.ConnectSsl(server, port); try { smtp.Ehlo(System.Net.Dns.GetHostName()); } catch { smtp.Helo(System.Net.Dns.GetHostName()); } if (message.From.Email != string.Empty) smtp.MailFrom(message.From); else smtp.MailFrom(message.Sender); smtp.RcptTo(message.To); smtp.RcptTo(message.Cc); smtp.RcptTo(message.Bcc); smtp.Data(message.ToMimeString());//,(message.Charset!=null ? message.Charset : "iso-8859-1")); smtp.Disconnect(); return true; }
/// <summary> /// Sends the message using the specified host as mail exchange server. /// </summary> /// <param name="message">The message to be sent.</param> /// <param name="servers">Servers to be used to send the message (in preference order).</param> /// <example> /// <code> /// C# /// /// Message message = new Message(); /// message.Subject = "Test"; /// message.From = new Address("*****@*****.**","John Doe"); /// message.To.Add("*****@*****.**","Mike Johns"); /// message.BodyText.Text = "Hello this is a test!"; /// /// ServerCollection servers = new ServerCollection(); /// servers.Add("mail.myhost.com",25); /// servers.Add("mail2.myhost.com",25); /// /// SmtpClient.Send(message,servers); /// /// VB.NET /// /// Dim message As New Message /// message.Subject = "Test" /// message.From = New Address("*****@*****.**","John Doe") /// message.To.Add("*****@*****.**","Mike Johns") /// message.BodyText.Text = "Hello this is a test!" /// /// Dim servers As New ServerCollection /// servers.Add("mail.myhost.com",25) /// servers.Add("mail2.myhost.com",25) /// /// SmtpClient.Send(message,servers) /// /// JScript.NET /// /// var message:Message = new Message(); /// message.Subject = "Test"; /// message.From = new Address("*****@*****.**","John Doe"); /// message.To.Add("*****@*****.**","Mike Johns"); /// message.BodyText.Text = "Hello this is a test!"; /// /// var servers:ServerCollection = new ServerCollection(); /// servers.Add("mail.myhost.com",25); /// servers.Add("mail2.myhost.com",25); /// /// SmtpClient.Send(message,servers); /// </code> /// </example> public static bool Send(Message message, ServerCollection servers, out string serverMessage) { // Ensure that the mime part tree is built message.CheckBuiltMimePartTree(); serverMessage = string.Empty; ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient(); bool messageSent = false; for(int i=0;i<servers.Count;i++) { try { if (servers[i].ServerEncryptionType != EncryptionType.None) { #if !PocketPC smtp.ConnectSsl(servers[i].Host,servers[i].Port); #else smtp.Connect(servers[i].Host, servers[i].Port); #endif }else { smtp.Connect(servers[i].Host,servers[i].Port); } try { smtp.Ehlo(System.Net.Dns.GetHostName()); } catch { smtp.Helo(System.Net.Dns.GetHostName()); } if(servers[i].Username!=null && servers[i].Username.Length>0 && servers[i].Password!=null && servers[i].Password.Length>0) smtp.Authenticate(servers[i].Username,servers[i].Password,SaslMechanism.Login); if(message.From.Email!=string.Empty) smtp.MailFrom(message.From); else smtp.MailFrom(message.Sender); smtp.RcptTo(message.To); smtp.RcptTo(message.Cc); smtp.RcptTo(message.Bcc); serverMessage = smtp.Data(message.ToMimeString());//,(message.Charset!=null ? message.Charset : "iso-8859-1")); smtp.Disconnect(); messageSent = true; break; } catch { continue; } } return messageSent; }
/// <summary> /// Validates syntax and existence of the given address. /// </summary> /// <param name="address">The address to be validated.</param> /// <returns>True if the address is valid, otherwise false.</returns> public static bool Validate(string address) { if (!ActiveUp.Net.Mail.Validator.ValidateSyntax(address)) return false; else { try { string domain = address.Split('@')[1]; bool result; ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient(); smtp.SendTimeout = 0; smtp.ReceiveTimeout = 0; MxRecordCollection mxRecords = new MxRecordCollection(); try { mxRecords = ActiveUp.Net.Mail.Validator.GetMxRecords(domain); } catch { new System.Exception("Can't connect to DNS server."); } //Console.WriteLine(mxRecords.GetPrefered().Exchange); if (mxRecords.Count > 0) smtp.Connect(mxRecords.GetPrefered().Exchange); else return false; try { smtp.Ehlo(System.Net.Dns.GetHostName()); } catch { smtp.Helo(System.Net.Dns.GetHostName()); } if (smtp.Verify(address)) result = true; else { try { //smtp.MailFrom("postmaster@"+System.Net.Dns.GetHostName()); //smtp.MailFrom("*****@*****.**"); smtp.MailFrom("postmaster@" + domain); smtp.RcptTo(address); result = true; } catch (Exception ex) { System.Console.WriteLine(ex.ToString()); #if !PocketPC System.Web.HttpContext.Current.Trace.Write("ActiveMail", ex.ToString()); #endif result = false; } } smtp.Disconnect(); return result; } catch { return false; } } }
/// <summary> /// Validates syntax and existence of the given address. /// </summary> /// <param name="address">The address to be validated.</param> /// <param name="dnsServers">Name Servers to be used for MX records search.</param> /// <returns>True if the address is valid, otherwise false.</returns> public static bool Validate(string address, ServerCollection dnsServers) { if (!ActiveUp.Net.Mail.Validator.ValidateSyntax(address)) return false; else { string domain = address.Split('@')[1]; bool result; ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient(); smtp.SendTimeout = 15; smtp.ReceiveTimeout = 15; MxRecordCollection mxRecords = new MxRecordCollection(); try { #if !PocketPC mxRecords = ActiveUp.Net.Mail.Validator.GetMxRecords(domain, dnsServers); #else mxRecords = ActiveUp.Net.Mail.Validator.GetMxRecords(domain); #endif } catch { new System.Exception("Can't connect to DNS server."); } smtp.Connect(mxRecords.GetPrefered().Exchange); try { smtp.Ehlo(System.Net.Dns.GetHostName()); } catch { smtp.Helo(System.Net.Dns.GetHostName()); } if (smtp.Verify(address)) result = true; else { try { //smtp.MailFrom("postmaster@"+System.Net.Dns.GetHostName()); //smtp.MailFrom("*****@*****.**"); smtp.MailFrom("postmaster@" + domain); smtp.RcptTo(address); result = true; } catch { result = false; } } smtp.Disconnect(); return result; } }
/// <summary> /// Validates syntax and existence of the given address. /// </summary> /// <param name="address">The address to be validated.</param> /// <returns>True if the address is valid, otherwise false.</returns> public static bool Validate(string address) { if (!ActiveUp.Net.Mail.Validator.ValidateSyntax(address)) { return(false); } else { try { string domain = address.Split('@')[1]; bool result; ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient(); smtp.SendTimeout = 0; smtp.ReceiveTimeout = 0; MxRecordCollection mxRecords = new MxRecordCollection(); try { mxRecords = ActiveUp.Net.Mail.Validator.GetMxRecords(domain); } catch { new System.Exception("Can't connect to DNS server."); } //Console.WriteLine(mxRecords.GetPrefered().Exchange); if (mxRecords.Count > 0) { smtp.Connect(mxRecords.GetPrefered().Exchange); } else { return(false); } try { smtp.Ehlo(System.Net.Dns.GetHostName()); } catch { smtp.Helo(System.Net.Dns.GetHostName()); } if (smtp.Verify(address)) { result = true; } else { try { //smtp.MailFrom("postmaster@"+System.Net.Dns.GetHostName()); //smtp.MailFrom("*****@*****.**"); smtp.MailFrom(string.Format("postmaster@{0}", domain)); smtp.RcptTo(address); result = true; } catch (Exception ex) { System.Console.WriteLine(ex.ToString()); #if !PocketPC System.Web.HttpContext.Current.Trace.Write("ActiveMail", ex.ToString()); #endif result = false; } } smtp.Disconnect(); return(result); } catch { return(false); } } }