示例#1
0
                    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;
                    }
示例#2
0
		            /// <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;
		            }
示例#3
0
		            /// <summary>
		            /// Sends the message using the specified DNS servers to get mail exchange servers addresses.
		            /// </summary>
		            /// <param name="message">The message to be sent.</param>
		            /// <param name="dnsServers">Servers to be used (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("ns1.dnsserver.com",53);
		            /// servers.Add("ns2.dnsserver.com",53);
		            /// 
		            /// SmtpClient.DirectSend(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("ns1.dnsserver.com",53)
		            /// servers.Add("ns2.dnsserver.com",53)
		            /// 
		            /// SmtpClient.DirectSend(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("ns1.dnsserver.com",53);
		            /// servers.Add("ns2.dnsserver.com",53);
		            /// 
		            /// SmtpClient.DirectSend(message,servers);
		            /// </code>
		            /// </example>
		            public static string DirectSend(Message message, ServerCollection dnsServers)
		            {
                        // Ensure that the mime part tree is built
                        message.CheckBuiltMimePartTree();

			            string email = (message.From.Name!="(unknown)") ? message.From.Email : message.Sender.Email;
			            int recipientCount = message.To.Count+message.Cc.Count+message.Bcc.Count;
#if !PocketPC
                        System.Array domains = System.Array.CreateInstance(typeof(string),new int[] {recipientCount},new int[] {0});
			            System.Array adds = System.Array.CreateInstance(typeof(ActiveUp.Net.Mail.Address),new int[] {recipientCount},new int[] {0});
#else
                        System.Array domains = System.Array.CreateInstance(typeof(string), new int[] { recipientCount });
                        System.Array adds = System.Array.CreateInstance(typeof(ActiveUp.Net.Mail.Address), new int[] { recipientCount });
#endif
                        ActiveUp.Net.Mail.AddressCollection recipients = new ActiveUp.Net.Mail.AddressCollection();
			            recipients += message.To;
			            recipients += message.Cc;
			            recipients += message.Bcc;
			            for(int i=0;i<recipients.Count;i++)
			            {
				            if (ActiveUp.Net.Mail.Validator.ValidateSyntax(recipients[i].Email))
				            {
					            domains.SetValue(recipients[i].Email.Split('@')[1],i);
					            adds.SetValue(recipients[i],i);
				            }
			            }
			            System.Array.Sort(domains,adds,null);
			            string currentDomain = "";
			            string address = "";
			            string buf = "";
			            ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient();
			            for(int j=0;j<adds.Length;j++)
			            {
				            address = ((ActiveUp.Net.Mail.Address)adds.GetValue(j)).Email;
				            if(((string)domains.GetValue(j))==currentDomain)
				            {
					            smtp.RcptTo(address);
					            if(j==(adds.Length-1))
					            {
                                    smtp.Data(message.ToMimeString(true));//,(message.Charset!=null ? message.Charset : "iso-8859-1"));
                                    smtp.Disconnect();
					            }
				            }
				            else
				            {
					            if(currentDomain!="")
					            {
						            smtp.Data(message.ToMimeString(true));//,(message.Charset!=null ? message.Charset : "iso-8859-1"));
						            smtp.Disconnect();
						            smtp = new ActiveUp.Net.Mail.SmtpClient(); 
					            }
					            currentDomain = (string)domains.GetValue(j);				
					            buf += currentDomain+"|";

                                if (dnsServers == null || dnsServers.Count == 0)
                                {
                                    if (dnsServers == null)
                                        dnsServers = new ServerCollection();

                                    IList<IPAddress> machineDnsServers = DnsQuery.GetMachineDnsServers();
                                    foreach (IPAddress ipAddress in machineDnsServers)
                                        dnsServers.Add(ipAddress.ToString());
                                }
					            ActiveUp.Net.Mail.MxRecordCollection mxs = ActiveUp.Net.Mail.Validator.GetMxRecords(currentDomain, dnsServers);
					            if(mxs != null && mxs.Count>0) smtp.Connect(mxs.GetPrefered().Exchange);
					            else throw new ActiveUp.Net.Mail.SmtpException("No MX record found for the domain \""+currentDomain+"\". Check that the domain is correct and exists or specify a DNS server.");
					            try
					            {
						            smtp.Ehlo(System.Net.Dns.GetHostName());
					            }
					            catch
					            {
						            smtp.Helo(System.Net.Dns.GetHostName());
					            }
					            smtp.MailFrom(email);
					            smtp.RcptTo(address);
                                if (j == (adds.Length - 1))
                                {
                                    smtp.Data(message.ToMimeString(true));//,(message.Charset!=null ? message.Charset : "iso-8859-1"));					
                                    smtp.Disconnect();
                                }
				            }
				            //}
				            //catch(ActiveUp.Net.Mail.SmtpException ex) { throw ex; }
			            }
			            return buf;
                    }
示例#4
0
		            /// <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;
		            }
示例#5
0
        public bool SendSsl(Message message, string host, int port, string username, string password,
                                   SaslMechanism mechanism, EncryptionType enc_type)
        {
            // Ensure that the mime part tree is built
            message.CheckBuiltMimePartTree();

            switch (enc_type)
            {
                case EncryptionType.SSL:
                    ConnectSsl(host, port);
                    break;
                case EncryptionType.StartTLS:
                    ConnectPlain(host, port);
                    break;
                default:
                    throw new ArgumentException("Incompatible EncriptionType with SendSSL: " + enc_type);
            }

            SendEhloHelo();

            if (enc_type == EncryptionType.StartTLS)
            {
                StartTLS(host);
            }

            SendMessageWithAuthentication(username, password, mechanism, message);
            return true;
        }
示例#6
0
        /// <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 bool Send(Message message, string host, int port, string username, string password,
                                SaslMechanism mechanism)
        {
            // Ensure that the mime part tree is built
            message.CheckBuiltMimePartTree();

            ConnectPlain(host, port);
            SendEhloHelo();
            Authenticate(username, password, mechanism);
            if (message.From.Email != string.Empty) MailFrom(message.From);
            else MailFrom(message.Sender);
            RcptTo(message.To);
            RcptTo(message.Cc);
            RcptTo(message.Bcc);
            Data(message.ToMimeString());
            Disconnect();
            return true;
        }
示例#7
0
        /// <summary>
        /// Sends the message using the specified host as mail exchange server on the specified port.
        /// </summary>
        /// <param name="message">The message to be sent.</param>
        /// <param name="host">The host to be used.</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",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",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",8504);
        /// </code>
        /// </example>
        public bool Send(Message message, string host, int port)
        {
            // Ensure that the mime part tree is built
            message.CheckBuiltMimePartTree();

            ConnectPlain(host, port);
            try
            {
                Ehlo(System.Net.Dns.GetHostName());
            }
            catch
            {
                Helo(System.Net.Dns.GetHostName());
            }
            if (message.From.Email != string.Empty) MailFrom(message.From);
            else MailFrom(message.Sender);
            RcptTo(message.To);
            RcptTo(message.Cc);
            RcptTo(message.Bcc);
            Data(message.ToMimeString());
            Disconnect();
            return true;
        }
示例#8
0
        public bool SendSsl(Message message, string host, int port, string username, string password,
                                   SaslMechanism mechanism)
        {
            // Ensure that the mime part tree is built
            message.CheckBuiltMimePartTree();

            ConnectSsl(host, port);
            SendEhloHelo();
            SendMessageWithAuthentication(username, password, mechanism, message);
            return true;
        }
示例#9
0
        public bool SendSsl(Message message, string server, int port)
        {
            // Ensure that the mime part tree is built
            message.CheckBuiltMimePartTree();

            ConnectSsl(server, port);
            SendEhloHelo();
            SendMessageWith(message);
            return true;
        }
示例#10
0
                    /// <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();

                        var smtp = new SmtpClient();
                        smtp.Connect(host,port);
                        smtp.SendEhloHelo();
                        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;
                    }
示例#11
0
                    public static bool SendSsl(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.ConnectSsl(host, port);
                        smtp.SendEhloHelo();
                        SendMessageWithAuthentication(smtp, username, password, mechanism, message);
                        return true;
                    }
示例#12
0
                    public static bool SendSsl(Message message, string host, int port, EncryptionType enc_type)
                    {
                        // Ensure that the mime part tree is built
                        message.CheckBuiltMimePartTree();

                        ActiveUp.Net.Mail.SmtpClient smtp = new ActiveUp.Net.Mail.SmtpClient();
                        switch (enc_type)
                        {
                            case EncryptionType.SSL:
                                smtp.ConnectSsl(host, port);
                                break;
                            case EncryptionType.StartTLS:
                                smtp.Connect(host, port);
                                break;
                            default:
                                throw new ArgumentException("Incompatible EncriptionType with SendSSL: " + enc_type);
                        }

                        smtp.SendEhloHelo();

                        if (enc_type == EncryptionType.StartTLS)
                        {
                            smtp.StartTLS(host);
                        }

                        SendMessageWith(smtp, message);
                        return true;
                    }
示例#13
0
                    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);
                        smtp.SendEhloHelo();
                        SendMessageWith(smtp, message);
                        return true;
                    }