예제 #1
0
        public static AddressCollection ParseAddresses(String toAddresses)
        {
            /*[email protected], "Simpson Marge" <*****@*****.**>,
             * "Simpson Bart" <*****@*****.**>, , "Simpson Bart" <*****@*****.**>,
             * "Simpson Maggie" <*****@*****.**>, */
            String recipientName, line;

            String[] inlineRecipients;
            ActiveUp.Net.Mail.AddressCollection addresses = new AddressCollection();

            toAddresses = toAddresses.Replace("<", String.Empty);
            toAddresses = toAddresses.Replace(">", String.Empty);
            String[] recipients = toAddresses.Split(new String[] { ",", ";" }, StringSplitOptions.RemoveEmptyEntries);

            foreach (String recipientLine in recipients)
            {
                line = recipientLine;
                if (recipientLine.Contains("\""))
                {
                    recipientName = recipientLine.Substring(recipientLine.IndexOf("\"") + 1, recipientLine.LastIndexOf("\"") - recipientLine.IndexOf("\"") - 1);
                    line          = recipientLine.Remove(0, recipientLine.LastIndexOf("\"") + 1);
                }
                else
                {
                    recipientName = "";
                }
                line             = System.Text.RegularExpressions.Regex.Replace(line, @"\s+", " ");
                inlineRecipients = line.Split(new String[] { " " }, StringSplitOptions.RemoveEmptyEntries);

                for (Int16 currentInlineRecipient = 0; currentInlineRecipient < inlineRecipients.Length; currentInlineRecipient++)
                {
                    if (inlineRecipients[currentInlineRecipient] == " " || inlineRecipients[currentInlineRecipient] == "\"" ||
                        inlineRecipients[currentInlineRecipient] == ":")
                    {
                        continue;
                    }
                    if (currentInlineRecipient == 0 && recipientName != "")
                    {
                        addresses.Add(new ActiveUp.Net.Mail.Address(inlineRecipients[currentInlineRecipient], recipientName));
                    }
                    else
                    {
                        addresses.Add(new ActiveUp.Net.Mail.Address(inlineRecipients[currentInlineRecipient]));
                    }
                }
            }
            return(addresses);
        }
예제 #2
0
        public AddressCollection GetAddressesDynamicCollection(string whereExpression, string orderBy)
        {
            IDBManager        dbm  = new DBManager();
            AddressCollection cols = new AddressCollection();

            try
            {
                dbm.CreateParameters(2);
                dbm.AddParameters(0, "@WhereCondition", whereExpression);
                dbm.AddParameters(1, "@OrderByExpression", orderBy);
                IDataReader reader = dbm.ExecuteReader(CommandType.StoredProcedure, "SelectAddressesDynamic");
                while (reader.Read())
                {
                    Address address = new Address();
                    address.AddressID     = Int32.Parse(reader["AddressID"].ToString());
                    address.AddressLine1  = reader["AddressLine1"].ToString();
                    address.AddressLine2  = reader["AddressLine2"].ToString();
                    address.City          = reader["City"].ToString();
                    address.StateProvince = reader["StateProvince"].ToString();
                    address.PostalCode    = reader["PostalCode"].ToString();
                    address.ModifiedDate  = DateTime.Parse(reader["ModifiedDate"].ToString());
                    cols.Add(address);
                }
            }
            catch (Exception ex)
            {
                log.Write(ex.Message, "GetAddressesDynamicCollection");
                throw (ex);
            }
            finally
            {
                dbm.Dispose();
            }
            return(cols);
        }
예제 #3
0
        public AddressCollection GetAllAddressesCollection()
        {
            IDBManager        dbm  = new DBManager();
            AddressCollection cols = new AddressCollection();

            try
            {
                IDataReader reader = dbm.ExecuteReader(CommandType.StoredProcedure, "SelectAddressesAll");
                while (reader.Read())
                {
                    Address address = new Address();
                    address.AddressID     = Int32.Parse(reader["AddressID"].ToString());
                    address.AddressLine1  = reader["AddressLine1"].ToString();
                    address.AddressLine2  = reader["AddressLine2"].ToString();
                    address.City          = reader["City"].ToString();
                    address.StateProvince = reader["StateProvince"].ToString();
                    address.PostalCode    = reader["PostalCode"].ToString();
                    address.ModifiedDate  = DateTime.Parse(reader["ModifiedDate"].ToString());
                    cols.Add(address);
                }
            }
            catch (Exception ex)
            {
                log.Write(ex.Message, "GetAllAddressesCollection");
                throw (ex);
            }
            finally
            {
                dbm.Dispose();
            }
            return(cols);
        }
예제 #4
0
        /// <summary Get Collection>
        /// Get collection of emails. If no records to return, EmailCollection will be null.
        /// </summary>
        /// <returns></returns>
        public static AddressCollection GetCollection(int employeeId)
        {
            AddressCollection tempList = null;

            using (SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString))
            {
                using (SqlCommand myCommand = new SqlCommand("usp_GetAddress", myConnection))
                {
                    myCommand.CommandType = CommandType.StoredProcedure;

                    myCommand.Parameters.AddWithValue("@QueryId", SelectTypeEnum.GetCollection);
                    myCommand.Parameters.AddWithValue("@EmployeeId", employeeId);

                    myConnection.Open();

                    using (SqlDataReader myReader = myCommand.ExecuteReader())
                    {
                        if (myReader.HasRows)
                        {
                            tempList = new AddressCollection();

                            while (myReader.Read())
                            {
                                tempList.Add(FillDataRecord(myReader));
                            }
                        }
                        myReader.Close();
                    }
                }
            }
            return tempList;
        }
예제 #5
0
 public void Add(AddressBookRecord addressBookRecord)
 {
     if (!AddressCollection.Contains(addressBookRecord, AddressBookRecordComparer))
     {
         AddressCollection.Add(addressBookRecord);
     }
 }
        public void SaveMailContacts(int tenant, string user, Message message)
        {
            try
            {
                Func <AddressCollection, AddressCollection> copyAddressesFunc = delegate(AddressCollection addresses)
                {
                    var newAddresses = new AddressCollection();

                    foreach (var address in addresses)
                    {
                        newAddresses.Add(new Address(address.Email,
                                                     !string.IsNullOrEmpty(address.Name) ? Codec.RFC2047Decode(address.Name) : string.Empty));
                    }

                    return(newAddresses);
                };

                var contacts = new AddressCollection();

                contacts.AddRange(copyAddressesFunc(message.To));
                contacts.AddRange(copyAddressesFunc(message.Cc));
                contacts.AddRange(copyAddressesFunc(message.Bcc));

                var contactsList = contacts.Distinct().ToList();

                using (var db = GetDb())
                {
                    var validContacts = (from contact in contactsList
                                         where MailContactExists(db, tenant, user, contact.Name, contact.Email) < 1
                                         select contact).ToList();

                    if (!validContacts.Any())
                    {
                        return;
                    }

                    var lastModified = DateTime.UtcNow;

                    var insertQuery = new SqlInsert(ContactsTable.name)
                                      .InColumns(ContactsTable.Columns.id_user,
                                                 ContactsTable.Columns.id_tenant,
                                                 ContactsTable.Columns.name,
                                                 ContactsTable.Columns.address,
                                                 ContactsTable.Columns.last_modified);

                    validContacts
                    .ForEach(contact =>
                             insertQuery
                             .Values(user, tenant, contact.Name, contact.Email, lastModified));

                    db.ExecuteNonQuery(insertQuery);
                }
            }
            catch (Exception e)
            {
                _log.Error("SaveMailContacts(tenant={0}, userId='{1}', mail_id={2}) Exception:\r\n{3}\r\n",
                           tenant, user, message.Id, e.ToString());
            }
        }
        private AddressCollection MimeMessageToAddessCollectionGet(MimeMessage message)
        {
            var result = new AddressCollection();

            foreach (var rawAddress in _testContext.MimeMessageToAddresses)
            {
                result.Add(new Address(rawAddress));
            }
            return(result);
        }
예제 #8
0
 public void InsertAndRemove()
 {
     Assert.DoesNotThrow(delegate
     {
         Address address = new Address();
         AddressCollection addressCollection = new AddressCollection();
         addressCollection.Add(address);
         address = addressCollection[0];
         addressCollection[0] = address;
         addressCollection.Remove(address);
     });
 }
예제 #9
0
        protected void DataGrid_Update(object sender, DataGridCommandEventArgs e)
        {
            int index = grid.EditItemIndex;

            if (index >= addresses.Count)
            {
                addresses.Add("", "");
            }

            Address address = addresses[index];

            address.AddressLines.Clear();

            DataGridItem item = grid.Items[index];

            string[] addressLine = new string[5]
            {
                ((TextBox)item.FindControl("address0")).Text,
                ((TextBox)item.FindControl("address1")).Text,
                ((TextBox)item.FindControl("address2")).Text,
                ((TextBox)item.FindControl("address3")).Text,
                ((TextBox)item.FindControl("address4")).Text
            };

            for (int i = 0; i < 5; i++)
            {
                if (!Utility.StringEmpty(addressLine[i]))
                {
                    address.AddressLines.Add(addressLine[i]);
                }
            }

            address.UseType = ((TextBox)item.FindControl("useType")).Text;
            business.Save();

            grid.EditItemIndex = -1;
            CancelEditMode();

            PopulateDataGrid();
        }
예제 #10
0
        private void _bFilterEmails_Click(object sender, EventArgs e)
        {
            // We instantiate the pop3 client.
            Pop3Client pop = new Pop3Client();

            try
            {
                this.AddLogEntry(string.Format("Connection to the pop 3 server : {0}", _tbPop3Server.Text));

                // Connect to the pop3 client
                pop.Connect(_tbPop3Server.Text, _tbUserName.Text, _tbPassword.Text);

                AddressCollection ac;
                HeaderCollection hc = new HeaderCollection();

                //Retrive a message headers
                for (int n = 1; n < pop.MessageCount + 1; n++)
                {
                    Header h = pop.RetrieveHeaderObject(n);
                    ac = new AddressCollection();
                    ac.Add(h.From);
                    ac = Validator.Filter(ac);

                    //If address is not filtered
                    if (ac.Count > 0)
                    {
                        hc.Add(h);
                    }
                }

                this.AddLogEntry(string.Format(" {0} messages passed the filter", hc.Count.ToString()));
            }

            catch (Pop3Exception pexp)
            {
                this.AddLogEntry(string.Format("Pop3 Error: {0}", pexp.Message));
            }

            catch (Exception ex)
            {
                this.AddLogEntry(string.Format("Failed: {0}", ex.Message));
            }

            finally
            {
                if (pop.IsConnected)
                {
                    pop.Disconnect();
                }
            }
        }
예제 #11
0
        private void _bFilterEmails_Click(object sender, EventArgs e)
        {
            // We instantiate the pop3 client.
            Pop3Client pop = new Pop3Client();

            try
            {
                this.AddLogEntry(string.Format("Connection to the pop 3 server : {0}", _tbPop3Server.Text));

                // Connect to the pop3 client
                pop.Connect(_tbPop3Server.Text, _tbUserName.Text, _tbPassword.Text);

                AddressCollection ac;
                HeaderCollection  hc = new HeaderCollection();

                //Retrive a message headers
                for (int n = 1; n < pop.MessageCount + 1; n++)
                {
                    Header h = pop.RetrieveHeaderObject(n);
                    ac = new AddressCollection();
                    ac.Add(h.From);
                    ac = Validator.Filter(ac);

                    //If address is not filtered
                    if (ac.Count > 0)
                    {
                        hc.Add(h);
                    }
                }

                this.AddLogEntry(string.Format(" {0} messages passed the filter", hc.Count.ToString()));
            }

            catch (Pop3Exception pexp)
            {
                this.AddLogEntry(string.Format("Pop3 Error: {0}", pexp.Message));
            }

            catch (Exception ex)
            {
                this.AddLogEntry(string.Format("Failed: {0}", ex.Message));
            }

            finally
            {
                if (pop.IsConnected)
                {
                    pop.Disconnect();
                }
            }
        }
예제 #12
0
        public void EXP_Send_Mail_Loads_Data_And_Sends_Mail_Correctly()
        {
            AddressCollection recipients = new AddressCollection();
            AddressCollection BCC        = new AddressCollection();
            AddressCollection CC         = new AddressCollection();

            Address addressOne    = new Address("*****@*****.**", "Simpson Marge");
            Address addressSecond = new Address("*****@*****.**", "Simpson Bart");
            Address addressThird  = new Address("*****@*****.**", "Simpson Maggie");

            recipients.Add(addressOne);
            recipients.Add(addressSecond);
            BCC.Add(addressOne);
            BCC.Add(addressThird);
            CC.Add(addressSecond);
            CC.Add(addressThird);

            String body    = "<b>Body text here is bold.</b><div><br></div><div style=\"text-align: center;\">Body text here is centered.</div><div><br></div><div><font color=\"#ac193d\">Body text here is red.</font></div>";
            String subject = "Glimpse Sender Test";

            this.mySender.sendMail(recipients, body, subject, CC, BCC);
            Assert.Pass();
        }
예제 #13
0
        public void Enviar()
        {
            ServerCollection  servers  = new ServerCollection();
            Server            Nlayer   = new Server();
            Message           message  = new Message();
            MimeBody          mimeBody = new MimeBody(BodyFormat.Html);
            AddressCollection destinos = new AddressCollection();

            Nlayer.Host     = "mail.softwareNlayer.com";
            Nlayer.Password = "******";
            Nlayer.Port     = 25;
            Nlayer.Username = "******";

            servers.Add(Nlayer);

            if (_destinos != null)
            {
                foreach (string destino in _destinos)
                {
                    destinos.Add(new Address(destino));
                }
            }

            if (_adjuntos != null)
            {
                foreach (string adjunto in _adjuntos)
                {
                    message.Attachments.Add(adjunto, false);
                }
            }

            mimeBody.Text = _mensaje;

            message.BodyHtml     = mimeBody;
            message.Date         = DateTime.Now;
            message.From         = new Address("*****@*****.**");
            message.Organization = "Nlayer Software";
            message.Priority     = MessagePriority.Normal;
            message.To           = destinos;
            message.Subject      = _asunto;

            AsyncCallback beginCallback = IniciaEnvio;

            SmtpClient.BeginSend(message, servers, beginCallback);
        }
예제 #14
0
        public void Enviar()
        {
            ServerCollection servers = new ServerCollection();
            Server Nlayer = new Server();
            Message message = new Message();
            MimeBody mimeBody = new MimeBody(BodyFormat.Html);
            AddressCollection destinos = new AddressCollection();

            Nlayer.Host = "mail.softwareNlayer.com";
            Nlayer.Password = "******";
            Nlayer.Port = 25;
            Nlayer.Username = "******";

            servers.Add(Nlayer);

            if (_destinos != null)
            {
                foreach (string destino in _destinos)
                {
                    destinos.Add(new Address(destino));
                }
            }

            if (_adjuntos != null)
            {
                foreach (string adjunto in _adjuntos)
                {
                    message.Attachments.Add(adjunto, false);
                }
            }

            mimeBody.Text = _mensaje;

            message.BodyHtml = mimeBody;
            message.Date = DateTime.Now;
            message.From = new Address("*****@*****.**");
            message.Organization = "Nlayer Software";
            message.Priority = MessagePriority.Normal;
            message.To = destinos;
            message.Subject = _asunto;

            AsyncCallback beginCallback = IniciaEnvio;
            SmtpClient.BeginSend(message, servers, beginCallback);
        }
        protected AddressCollection getAllowedBillingAddresses(Customer customer)
        {
            AddressCollection addresses = new AddressCollection();

            if (customer == null)
            {
                return(addresses);
            }

            foreach (Address address in customer.BillingAddresses)
            {
                Country country = address.Country;
                if (country != null && country.AllowsBilling)
                {
                    addresses.Add(address);
                }
            }

            return(addresses);
        }
예제 #16
0
        protected AddressCollection GetAllowedShippingAddresses(Customer customer)
        {
            var addresses = new AddressCollection();

            if (customer == null)
            {
                return(addresses);
            }

            foreach (var address in customer.ShippingAddresses)
            {
                var country = address.Country;
                if (country != null && country.AllowsShipping)
                {
                    addresses.Add(address);
                }
            }

            return(addresses);
        }
예제 #17
0
        public static void SendGreetingsPassword(User newUser, String mailAddress)
        {
            SmtpMessage         greetingsMail    = new SmtpMessage();
            AddressCollection   to               = new AddressCollection();
            IList <MailAccount> userMailAccounts = newUser.GetAccounts();

            #region Build Mail Body
            String mailBody = "";
            mailBody += "¡Bienvenido a Glimpse!\nSu nuevo usuario es: " + newUser.Entity.Username + " (" +
                        newUser.Entity.Firstname + " " + newUser.Entity.Lastname + ").\n" +
                        "Las cuentas asociadas al mismo son:\n\n";
            foreach (MailAccount userMailAccount in userMailAccounts)
            {
                mailBody += "\t- " + userMailAccount.Entity.Address;
                if (userMailAccount.Entity.IsMainAccount)
                {
                    mailBody += " (cuenta principal)";
                }
                mailBody += ".\n";
            }
            mailBody += "\nPara editar la información de su usuario, ingrese a Glimpse y vaya al panel de Configuración.\n\n" +
                        "Si no se ha registrado en Glimpse, por favor ignore este mensaje o responda al mismo indicando el inconveniente originado.";
            #endregion

            greetingsMail.From          = new ActiveUp.Net.Mail.Address("*****@*****.**");
            greetingsMail.BodyText.Text = mailBody;

            SetMailBodyEncoding(greetingsMail.BodyText, BodyFormat.Text);

            String   encodedSubject = "=?ISO-8859-1?B?";
            Encoding iso            = Encoding.GetEncoding("ISO-8859-1");
            encodedSubject       += Convert.ToBase64String(iso.GetBytes("¡Bienvenido a Glimpse!"), Base64FormattingOptions.InsertLineBreaks);
            encodedSubject       += "?=";
            greetingsMail.Subject = encodedSubject;

            to.Add(new ActiveUp.Net.Mail.Address(mailAddress));
            greetingsMail.To = to;
            greetingsMail.SendSsl("smtp.gmail.com", 465, "*****@*****.**", "poiewq123890", SaslMechanism.Login);
        }
예제 #18
0
        public static void SendResetPasswordMail(String username, String mailAddress, String newPassword)
        {
            SmtpMessage       resetMail = new SmtpMessage();
            AddressCollection to        = new AddressCollection();

            resetMail.From          = new ActiveUp.Net.Mail.Address("*****@*****.**");
            resetMail.BodyText.Text = "Usted ha olvidado la contraseña de su usuario Glimpse: " + username +
                                      ".\nLa nueva contraseña autogenerada es: \"" + newPassword + "\"." +
                                      "\nDeberá ingresar con ésta clave la próxima vez que ingrese a Glimpse.";

            SetMailBodyEncoding(resetMail.BodyText, BodyFormat.Text);

            String   encodedSubject = "=?ISO-8859-1?B?";
            Encoding iso            = Encoding.GetEncoding("ISO-8859-1");

            encodedSubject   += Convert.ToBase64String(iso.GetBytes("Nueva Contraseña Glimpse"), Base64FormattingOptions.InsertLineBreaks);
            encodedSubject   += "?=";
            resetMail.Subject = encodedSubject;

            to.Add(new ActiveUp.Net.Mail.Address(mailAddress));
            resetMail.To = to;
            resetMail.SendSsl("smtp.gmail.com", 465, "*****@*****.**", "poiewq123890", SaslMechanism.Login);
        }
        protected AddressCollection getAllowedShippingAddresses(Customer customer)
        {
            AddressCollection addresses = new AddressCollection();
            if (customer == null)
                return addresses;

            foreach (Address address in customer.ShippingAddresses)
            {
                Country country = address.Country;
                if (country != null && country.AllowsShipping)
                {
                    addresses.Add(address);
                }
            }

            return addresses;
        }
예제 #20
0
        /// <summary>
        /// Parses a string containing addresses in the following formats :
        /// <list type="circle">
        /// <item>"John Doe" &lt;[email protected]>,"Mike Johns" &lt;[email protected]></item>
        /// <item>"John Doe" &lt;[email protected]>;"Mike Johns" &lt;[email protected]></item>
        /// <item>&lt;[email protected]></item>
        /// <item>[email protected]</item>
        /// </list>
        /// </summary>
        /// <param name="input">A string containing addresses in the formats desribed above.</param>
        /// <returns>An AddressCollection object containing the parsed addresses.</returns>
        public static AddressCollection ParseAddresses(string input)
        {
            //TODO: enforce parser to use regex
            AddressCollection addresses = new AddressCollection();

            string[] comma_separated = input.Split(',');
            for (int i = 0; i < comma_separated.Length; i++)
                if (comma_separated[i].IndexOf("@") == -1 && comma_separated.Length > (i + 1))
                    comma_separated[i + 1] = comma_separated[i] + comma_separated[i + 1];

            for (int i = 0; i < comma_separated.Length; i++) if(comma_separated[i].IndexOf("@")!=-1)
                addresses.Add(Parser.ParseAddress((comma_separated[i].IndexOf("<") != -1 && comma_separated[i].IndexOf(":") != -1 && comma_separated[i].IndexOf(":") < comma_separated[i].IndexOf("<")) ? ((comma_separated[i].Split(':')[0].IndexOf("\"") == -1) ? comma_separated[i].Split(':')[1] : comma_separated[i]) : comma_separated[i]));

            //MatchCollection matches = Regex.Matches(input, "(\"(?<name>.+?)\")*\\s*<?(?<email>[^<>,\"\\s]+)>?");

            //foreach (Match m in matches)
            //    addresses.Add(m.Groups["email"].Value, m.Groups["name"].Value);

            return addresses;
        }
예제 #21
0
        public static bool TryParseAddresses(string input, out AddressCollection addresses)
        {
            addresses = new AddressCollection();
            try
            {
                var comma_separated = input.Split(',');
                for (var i = 0; i < comma_separated.Length; i++)
                    if (comma_separated[i].IndexOf("@", StringComparison.Ordinal) == -1 && comma_separated.Length > (i + 1))
                        comma_separated[i + 1] = comma_separated[i] + comma_separated[i + 1];

                foreach (var t in comma_separated.Where(t => t.IndexOf("@", StringComparison.Ordinal) != -1))
                {
                    var address_string = (
                                         t.IndexOf("<", StringComparison.Ordinal) != -1 &&
                                         t.IndexOf(":", StringComparison.Ordinal) != -1 &&
                                         t.IndexOf(":", StringComparison.Ordinal) <
                                         t.IndexOf("<", StringComparison.Ordinal)
                                         ? ((t.Split(':')[0].IndexOf("\"", StringComparison.Ordinal) == -1)
                                                ? t.Split(':')[1]
                                                : t)
                                         : t);

                    Address address;
                    if (TryParseAddress(address_string, out address))
                    {
                        addresses.Add(address);
                    }
                }

                return true;
            }
            catch { }

            return false;
        }
예제 #22
0
        /// <summary>
        /// Parses a string containing addresses in the following formats :
        /// <list type="circle">
        /// <item>"John Doe" &lt;[email protected]>,"Mike Johns" &lt;[email protected]></item>
        /// <item>"John Doe" &lt;[email protected]>;"Mike Johns" &lt;[email protected]></item>
        /// <item>&lt;[email protected]></item>
        /// <item>[email protected]</item>
        /// </list>
        /// </summary>
        /// <param name="input">A string containing addresses in the formats desribed above.</param>
        /// <returns>An AddressCollection object containing the parsed addresses.</returns>
        public static AddressCollection ParseAddresses(string input)
        {
            //TODO: enforce parser to use regex
            var addresses = new AddressCollection();

            var comma_separated = input.Split(',');
            for (var i = 0; i < comma_separated.Length; i++)
                if (comma_separated[i].IndexOf("@", StringComparison.Ordinal) == -1 && comma_separated.Length > (i + 1))
                    comma_separated[i + 1] = comma_separated[i] + comma_separated[i + 1];

            foreach (var t in comma_separated.Where(t => t.IndexOf("@", StringComparison.Ordinal)!=-1))
                addresses.Add(
                    ParseAddress((
                    t.IndexOf("<", StringComparison.Ordinal) != -1 && 
                    t.IndexOf(":", StringComparison.Ordinal) != -1 && 
                    t.IndexOf(":", StringComparison.Ordinal) < t.IndexOf("<", StringComparison.Ordinal)) ? 
                    ((t.Split(':')[0].IndexOf("\"", StringComparison.Ordinal) == -1) ? t.Split(':')[1] : t) : t));

            return addresses;
        }
        public void StoreAddresses()
        {
            var collection = new AddressCollection();

            var publicAddress = new Address("1ky1eHUrRR1kxKTbfiCptao9V25W97gDm");
            var publicDetails = new AddressDetails(publicAddress, "public");

            var miningAddress = new Address("1digVweRyrR9NbPaQJ2dfudXcZWQd81au");
            var miningDetails = new AddressDetails(miningAddress, "mining");

            var miscAddress = new Address("12pa32rAF8dejmKnU6XfXZ3aNCmroVNSQj");
            var miscDetails = new AddressDetails(miscAddress);



            collection.Add(publicDetails);
            collection.Add(miningDetails);
            collection.Add(miscAddress);

            Assert.AreEqual(collection.Count, 3);

            Assert.AreEqual(collection[0], publicDetails);
            Assert.AreEqual(collection[publicAddress], publicDetails);

            Assert.AreEqual(collection[1], miningDetails);
            Assert.AreEqual(collection[miningAddress], miningDetails);

            Assert.AreEqual(collection[2], miscDetails);
            Assert.AreEqual(collection[miscAddress], miscDetails);



            collection.Remove(publicAddress);

            Assert.AreEqual(collection.Count, 2);

            Assert.AreEqual(collection[0], miningDetails);
            Assert.AreEqual(collection[miningAddress], miningDetails);

            Assert.AreEqual(collection[1], miscDetails);
            Assert.AreEqual(collection[miscAddress], miscDetails);



            collection.Insert(1, publicDetails);

            Assert.AreEqual(collection.Count, 3);

            Assert.AreEqual(collection[0], miningDetails);
            Assert.AreEqual(collection[miningAddress], miningDetails);

            Assert.AreEqual(collection[1], publicDetails);
            Assert.AreEqual(collection[publicAddress], publicDetails);

            Assert.AreEqual(collection[2], miscDetails);
            Assert.AreEqual(collection[miscAddress], miscDetails);


            collection.RemoveAt(2);

            Assert.AreEqual(collection.Count, 2);

            Assert.AreEqual(collection[0], miningDetails);
            Assert.AreEqual(collection[miningAddress], miningDetails);

            Assert.AreEqual(collection[1], publicDetails);
            Assert.AreEqual(collection[publicAddress], publicDetails);
        }
예제 #24
0
		//Address parsing conformant to RFC2822's addr-spec.
		/// <summary>
		/// Parses a string containing addresses in the following formats :
		/// <list type="circle">
		/// <item>"John Doe" &lt;[email protected]>,"Mike Johns" &lt;[email protected]></item>
		/// <item>"John Doe" &lt;[email protected]>;"Mike Johns" &lt;[email protected]></item>
		/// <item>&lt;[email protected]></item>
		/// <item>[email protected]</item>
		/// </list>
		/// </summary>
		/// <param name="input">A string containing addresses in the formats desribed above.</param>
		/// <returns>An AddressCollection object containing the parsed addresses.</returns>
        public static AddressCollection ParseAddresses(string input)
		{
            AddressCollection addresses = new AddressCollection();
			string[] comma_separated = input.Split(',');
			for(int i=0;i<comma_separated.Length;i++) 
				if(comma_separated[i].IndexOf("@")==-1 && comma_separated.Length>(i+1)) 
					comma_separated[i+1] = comma_separated[i]+comma_separated[i+1];

			for(int i=0;i<comma_separated.Length;i++) /*if(comma_separated[i].IndexOf("@")!=-1)*/ 
				addresses.Add(Parser.ParseAddress((comma_separated[i].IndexOf("<")!=-1 && comma_separated[i].IndexOf(":")!=-1 && comma_separated[i].IndexOf(":")<comma_separated[i].IndexOf("<")) ? ((comma_separated[i].Split(':')[0].IndexOf("\"")==-1) ? comma_separated[i].Split(':')[1] : comma_separated[i]) : comma_separated[i]));

			return addresses;
		}
예제 #25
0
        /// <summary>
        /// Gets the addresses from the details array
        /// </summary>
        /// <returns>A <see cref="AddressCollection"/></returns>
        private static AddressCollection ParseAddresses()
        {
            AddressCollection addressCollection = new AddressCollection();
            var addressStrings = _contactDetails.Where(s => s.StartsWith("ADR"));

            foreach (string addressStr in addressStrings)
            {
                string addressString = addressStr.Replace("ADR;", "").Replace("ADR:", "");
                addressString = addressString.Replace("TYPE=", "");
                //Remove multiple typing
                if (addressString.Contains(","))
                {
                    int index = addressString.LastIndexOf(",");
                    addressString = addressString.Remove(0, index + 1);
                }

                //Logic
                if (addressString.StartsWith("HOME:") || addressString.StartsWith("home:"))
                {
                    addressString = addressString.Replace("HOME:", "").Replace("home:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.Home
                    };
                    addressCollection.Add(address);
                }
                else if (addressString.StartsWith("WORK:") || addressString.StartsWith("work:"))
                {
                    addressString = addressString.Replace("WORK:", "").Replace("work:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.Work
                    };
                    addressCollection.Add(address);
                }
                else if (addressString.StartsWith("DOM:") || addressString.StartsWith("dom:"))
                {
                    addressString = addressString.Replace("DOM:", "").Replace("dom:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.Domestic
                    };
                    addressCollection.Add(address);
                }
                else if (addressString.StartsWith("INTL:") || addressString.StartsWith("intl:"))
                {
                    addressString = addressString.Replace("INTL:", "").Replace("intl:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.International
                    };
                    addressCollection.Add(address);
                }
                else if (addressString.StartsWith("PARCEL:") || addressString.StartsWith("parcel:"))
                {
                    addressString = addressString.Replace("PARCEL:", "").Replace("parcel:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.Parcel
                    };
                    addressCollection.Add(address);
                }
                else if (addressString.StartsWith("POSTAL:") || addressString.StartsWith("postal:"))
                {
                    addressString = addressString.Replace("POSTAL:", "").Replace("postal:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.Postal
                    };
                    addressCollection.Add(address);
                }
                else
                {
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.None
                    };
                    addressCollection.Add(address);
                }
            }

            return(addressCollection);
        }
		public void StoreAddresses() {
			var collection = new AddressCollection();

			var publicAddress = new Address("1ky1eHUrRR1kxKTbfiCptao9V25W97gDm");
			var publicDetails = new AddressDetails(publicAddress, "public");

			var miningAddress = new Address("1digVweRyrR9NbPaQJ2dfudXcZWQd81au");
			var miningDetails = new AddressDetails(miningAddress, "mining");

			var miscAddress = new Address("12pa32rAF8dejmKnU6XfXZ3aNCmroVNSQj");
			var miscDetails = new AddressDetails(miscAddress);



			collection.Add(publicDetails);
			collection.Add(miningDetails);
			collection.Add(miscAddress);

			Assert.AreEqual(collection.Count, 3);

			Assert.AreEqual(collection[0], publicDetails);
			Assert.AreEqual(collection[publicAddress], publicDetails);

			Assert.AreEqual(collection[1], miningDetails);
			Assert.AreEqual(collection[miningAddress], miningDetails);

			Assert.AreEqual(collection[2], miscDetails);
			Assert.AreEqual(collection[miscAddress], miscDetails);



			collection.Remove(publicAddress);

			Assert.AreEqual(collection.Count, 2);

			Assert.AreEqual(collection[0], miningDetails);
			Assert.AreEqual(collection[miningAddress], miningDetails);

			Assert.AreEqual(collection[1], miscDetails);
			Assert.AreEqual(collection[miscAddress], miscDetails);



			collection.Insert(1, publicDetails);

			Assert.AreEqual(collection.Count, 3);

			Assert.AreEqual(collection[0], miningDetails);
			Assert.AreEqual(collection[miningAddress], miningDetails);

			Assert.AreEqual(collection[1], publicDetails);
			Assert.AreEqual(collection[publicAddress], publicDetails);

			Assert.AreEqual(collection[2], miscDetails);
			Assert.AreEqual(collection[miscAddress], miscDetails);


			collection.RemoveAt(2);

			Assert.AreEqual(collection.Count, 2);

			Assert.AreEqual(collection[0], miningDetails);
			Assert.AreEqual(collection[miningAddress], miningDetails);

			Assert.AreEqual(collection[1], publicDetails);
			Assert.AreEqual(collection[publicAddress], publicDetails);
		}
예제 #27
0
        /// <summary>
        /// Gets the addresses from the details array
        /// </summary>
        /// <returns>A <see cref="AddressCollection"/></returns>
        private static AddressCollection ParseAddresses()
        {
            AddressCollection addressCollection = new AddressCollection();
            var addressStrings = _contactDetails.Where(s => s.StartsWith("ADR"));

            foreach (string addressStr in addressStrings)
            {
                string addressString = addressStr.Replace("ADR;", "").Replace("ADR:", "");
                if (addressString.StartsWith("HOME:"))
                {
                    addressString = addressString.Replace("HOME:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.Home
                    };
                    addressCollection.Add(address);
                }
                else if (addressString.StartsWith("WORK:"))
                {
                    addressString = addressString.Replace("WORK:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.Work
                    };
                    addressCollection.Add(address);
                }
                else if (addressString.StartsWith("DOM:") || addressString.StartsWith("dom:"))
                {
                    addressString = addressString.Replace("DOM:", "").Replace("dom:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.Domestic
                    };
                    addressCollection.Add(address);
                }
                else if (addressString.StartsWith("INTL:") || addressString.StartsWith("intl:"))
                {
                    addressString = addressString.Replace("INTL:", "").Replace("intl:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.International
                    };
                    addressCollection.Add(address);
                }
                else if (addressString.StartsWith("PARCEL:") || addressString.StartsWith("parcel:"))
                {
                    addressString = addressString.Replace("PARCEL:", "").Replace("parcel:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.Parcel
                    };
                    addressCollection.Add(address);
                }
                else if (addressString.StartsWith("POSTAL:") || addressString.StartsWith("postal:"))
                {
                    addressString = addressString.Replace("POSTAL:", "").Replace("postal:", "");
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.Postal
                    };
                    addressCollection.Add(address);
                }
                else
                {
                    Address address = new Address
                    {
                        Location = addressString.Replace(";", " "),
                        Type     = AddressType.None
                    };
                    addressCollection.Add(address);
                }
            }
            return(addressCollection);
        }