Example #1
0
		/*/// <summary>
		/// Process the Text template.
		/// </summary>
		private void ProcessTextTemplate(string content)
		{
			ActiveUp.Net.Mail.Logger.AddEntry("Processing the TEXT template.", 1);

			// Initialize strings to be used later
			string line = string.Empty, lineUpper = string.Empty;

			// Initialize the StringReader to read line per line
			StringReader reader = new StringReader(content);

			// Initialize the actual body count
			int bodyCount = _bodies.Count, lineNumber = 0;

			// Read and parse each line. Append the data in the properties.
			while (reader.Peek() > -1) 
			{
				ActiveUp.Net.Mail.Logger.AddEntry("Line parsed. Body count: + " + bodyCount.ToString() + ".", 0);

				line = reader.ReadLine();
				lineNumber++;
				lineUpper = line.ToUpper();
				
				// If a property, then set value	
				if (lineUpper.StartsWith("TO:"))
				{
					ActiveUp.Net.Mail.Logger.AddEntry("TO property found: + " + line + " (raw).", 0);
					this.Message.To.Add(Parser.ParseAddress(ExtractValue(line)));
				}
				else if (lineUpper.StartsWith("BCC:"))
				{
					ActiveUp.Net.Mail.Logger.AddEntry("BCC property found: + " + line + " (raw).", 0);
					this.Message.Bcc.Add(Parser.ParseAddress(ExtractValue(line)));
				}
				else if (lineUpper.StartsWith("CC:"))
				{
					ActiveUp.Net.Mail.Logger.AddEntry("CC property found: + " + line + " (raw).", 0);
					this.Message.Cc.Add(Parser.ParseAddress(ExtractValue(line)));
				}
				else if (lineUpper.StartsWith("FROM:"))
				{
					ActiveUp.Net.Mail.Logger.AddEntry("FROM property found: + " + line + " (raw).", 0);
					this.Message.From = Parser.ParseAddress(ExtractValue(line));
				}
				else if (lineUpper.StartsWith("SUBJECT:"))
				{
					ActiveUp.Net.Mail.Logger.AddEntry("SUBJECT property found: + " + line + " (raw).", 0);
					this.Message.Subject += ExtractValue(line);
				}
				else if (lineUpper.StartsWith("SMTPSERVER:"))
				{
					ActiveUp.Net.Mail.Logger.AddEntry("SMTPSERVER property found: + " + line + " (raw).", 0);
					this.SmtpServers.Add(ExtractValue(line), 25);
				}
				else if (lineUpper.StartsWith("BODYTEXT:"))
				{
					ActiveUp.Net.Mail.Logger.AddEntry("BODYTEXT property found: + " + line + " (raw).", 0);
					this.Bodies.Add(ExtractValue(line), BodyFormat.Text);
					bodyCount++;
				}
				else if (lineUpper.StartsWith("BODYHTML:"))
				{
					ActiveUp.Net.Mail.Logger.AddEntry("BODYHTML property found: + " + line + " (raw).", 0);
					this.Bodies.Add(ExtractValue(line), BodyFormat.Html);
					bodyCount++;
				}
				else if (lineUpper.StartsWith("FIELDFORMAT:") && lineUpper.IndexOf("=") > -1)
				{
					ActiveUp.Net.Mail.Logger.AddEntry("FIELDFORMAT property found: + " + line + " (raw).", 0);
					this.FieldsFormats.Add(ExtractFormat(line));
				}
				else if (lineUpper.StartsWith("//"))
				{
					ActiveUp.Net.Mail.Logger.AddEntry("COMMENT line found: + " + line + " (raw).", 0);
					// Line is a comment, so do nothing
				}
					// If not a property, then it's a message line
				else
				{
					ActiveUp.Net.Mail.Logger.AddEntry("BODY line found: + " + line + " (raw).", 0);
					this.Bodies[bodyCount-1].Content += line + "\r\n";					
				}
			}
		}*/

		/*/// <summary>
		/// Extract the format options from a text template line.
		/// </summary>
		/// <param name="line">The text template line.</param>
		/// <returns>A FieldFormat object with the options.</returns>
		private FieldFormat ExtractFormat(string line)
		{
			ActiveUp.Net.Mail.Logger.AddEntry("Extracting FieldFormat from line: + " + line + " (raw).", 0);
			
			FieldFormat fieldFormat = new FieldFormat();
			string property, val;

			foreach(string format in ExtractValue(line).Split(';'))
			{
				string[] lineSplit = format.Split('=');
				
				if (lineSplit.Length > 1)
				{
					property = lineSplit[0];
					val = lineSplit[1];

					switch (property.ToUpper())
					{
						case "NAME": fieldFormat.Name = val; break;
						case "FORMAT": fieldFormat.Format = val; break;
						case "PADDINGDIR":
							if (val.ToUpper() == "LEFT")
								fieldFormat.PaddingDir = PaddingDirection.Left; 
							else
								fieldFormat.PaddingDir = PaddingDirection.Right;
							break;
						case "TOTALWIDTH":
							try
							{
								fieldFormat.TotalWidth = Convert.ToInt16(val);
							}
							catch
							{
								throw new Exception("Specified Total Width is not a valid number.");
							}
							break;
						case "PADDINGCHAR": fieldFormat.PaddingChar = Convert.ToChar(val.Substring(0, 1)); break;
					}

				}// End if line split length > 1
			}

			return fieldFormat;
		}*/

		/// <summary>
		/// Process the Xml template.
		/// </summary>
		private void ProcessXmlTemplate(string content)
		{
			ActiveUp.Net.Mail.Logger.AddEntry("Processing the XML template.", 1);

			StringReader stringReader = new StringReader(content);
			XmlTextReader reader = new XmlTextReader(stringReader);

			string element = string.Empty;

			while (reader.Read())
			{
				switch (reader.NodeType)
				{
					case XmlNodeType.Element:
						element = reader.Name;
						ActiveUp.Net.Mail.Logger.AddEntry("New element found: " + element + ".", 0);

					switch (element.ToUpper())
					{
						case "MESSAGE":
						{
							if (reader.GetAttribute("PRIORITY") != null && reader.GetAttribute("PRIORITY") != string.Empty)
								this.Message.Priority = (MessagePriority)Enum.Parse(typeof(MessagePriority), reader.GetAttribute("PRIORITY"), true); 
							else if (reader.GetAttribute("priority") != null && reader.GetAttribute("priority") != string.Empty)
								this.Message.Priority = (MessagePriority)Enum.Parse(typeof(MessagePriority), reader.GetAttribute("priority"), true); 

						} break;

						case "FIELDFORMAT":
							if (reader.HasAttributes)
							{
								ActiveUp.Net.Mail.Logger.AddEntry("Element has attributes.", 0);
								FieldFormat fieldFormat = new FieldFormat();

								if (reader.GetAttribute("NAME") != null && reader.GetAttribute("NAME") != string.Empty)
								{
									fieldFormat.Name = reader.GetAttribute("NAME");
									ActiveUp.Net.Mail.Logger.AddEntry("Attribute NAME: " + fieldFormat.Name, 0);
								}

								else if (reader.GetAttribute("name") != null && reader.GetAttribute("name") != string.Empty)
								{
									fieldFormat.Name = reader.GetAttribute("name");
									ActiveUp.Net.Mail.Logger.AddEntry("Attribute name: " + fieldFormat.Name, 0);
								}

								if (reader.GetAttribute("FORMAT") != null && reader.GetAttribute("FORMAT") != string.Empty)
								{
									fieldFormat.Format = reader.GetAttribute("FORMAT");
									ActiveUp.Net.Mail.Logger.AddEntry("Attribute FORMAT: " + fieldFormat.Format, 0);
								}

								else if (reader.GetAttribute("format") != null && reader.GetAttribute("format") != string.Empty)
								{
									fieldFormat.Format = reader.GetAttribute("format");
									ActiveUp.Net.Mail.Logger.AddEntry("Attribute format: " + fieldFormat.Format, 0);
								}

								if (reader.GetAttribute("PADDINGDIR") != null && reader.GetAttribute("PADDINGDIR") != string.Empty)
								{
									if (reader.GetAttribute("PADDINGDIR").ToUpper() == "LEFT")
										fieldFormat.PaddingDir = PaddingDirection.Left;
									else
										fieldFormat.PaddingDir = PaddingDirection.Right;
									ActiveUp.Net.Mail.Logger.AddEntry("Attribute PADDINGDIR: " + reader.GetAttribute("PADDINGDIR"), 0);
								}

								else if (reader.GetAttribute("paddingdir") != null && reader.GetAttribute("paddingdir") != string.Empty)
								{
									if (reader.GetAttribute("paddingdir").ToUpper() == "left")
										fieldFormat.PaddingDir = PaddingDirection.Left;
									else
										fieldFormat.PaddingDir = PaddingDirection.Right;
									ActiveUp.Net.Mail.Logger.AddEntry("Attribute paddingdir: " + reader.GetAttribute("paddingdir"), 0);
								}

								if (reader.GetAttribute("TOTALWIDTH") != null && reader.GetAttribute("TOTALWIDTH") != string.Empty)
								{
									try
									{
										fieldFormat.TotalWidth = Convert.ToInt16(reader.GetAttribute("TOTALWIDTH"));
									}
									catch
									{
										throw new Exception("Specified Total Width is not a valid number.");
									}
									ActiveUp.Net.Mail.Logger.AddEntry("Attribute TOTALWIDTH: " + fieldFormat.TotalWidth.ToString(), 0);
								}

								else if (reader.GetAttribute("totalwidth") != null && reader.GetAttribute("totalwidth") != string.Empty)
								{
									try
									{
										fieldFormat.TotalWidth = Convert.ToInt16(reader.GetAttribute("totalwidth"));
									}
									catch
									{
										throw new Exception("Specified Total Width is not a valid number.");
									}
									ActiveUp.Net.Mail.Logger.AddEntry("Attribute totalwidth: " + fieldFormat.TotalWidth.ToString(), 0);
								}

								if (reader.GetAttribute("PADDINGCHAR") != null && reader.GetAttribute("PADDINGCHAR") != string.Empty)
								{
									fieldFormat.PaddingChar = Convert.ToChar(reader.GetAttribute("PADDINGCHAR").Substring(0, 1));
									ActiveUp.Net.Mail.Logger.AddEntry("Attribute PADDINGCHAR: '" + fieldFormat.PaddingChar + "'", 0);
								}

								else if (reader.GetAttribute("paddingchar") != null && reader.GetAttribute("paddingchar") != string.Empty)
								{
									fieldFormat.PaddingChar = Convert.ToChar(reader.GetAttribute("paddingchar").Substring(0, 1));
									ActiveUp.Net.Mail.Logger.AddEntry("Attribute paddingchar: '" + fieldFormat.PaddingChar + "'", 0);
								}

								this.FieldsFormats.Add(fieldFormat);
							}
								
							break;
						case "FROM":
						case "TO":
						case "CC":
						case "BCC":
							if (reader.HasAttributes)
							{
								ActiveUp.Net.Mail.Address address = new ActiveUp.Net.Mail.Address();
								if (reader.GetAttribute("NAME") != null && reader.GetAttribute("NAME") != string.Empty)
									address.Name = reader.GetAttribute("NAME");
								else if (reader.GetAttribute("name") != null && reader.GetAttribute("name") != string.Empty)
									address.Name = reader.GetAttribute("name");
								if (reader.GetAttribute("EMAIL") != null && reader.GetAttribute("EMAIL") != string.Empty)
									address.Email = reader.GetAttribute("EMAIL");
								else if (reader.GetAttribute("email") != null && reader.GetAttribute("email") != string.Empty)
									address.Email = reader.GetAttribute("email");
								if (element.ToUpper() == "FROM")
								{
									if (reader.GetAttribute("REPLYNAME") != null && reader.GetAttribute("REPLYNAME") != string.Empty)
									{
										InitReplyTo();
										this.Message.ReplyTo.Name = reader.GetAttribute("REPLYNAME");
									}
									else if (reader.GetAttribute("replyname") != null && reader.GetAttribute("replyname") != string.Empty)
									{
										InitReplyTo();
										this.Message.ReplyTo.Name = reader.GetAttribute("replyname");
									}

									if (reader.GetAttribute("REPLYEMAIL") != null && reader.GetAttribute("REPLYEMAIL") != string.Empty)
									{
										InitReplyTo();
										this.Message.ReplyTo.Email = reader.GetAttribute("REPLYEMAIL");
									}
									else if (reader.GetAttribute("replyemail") != null && reader.GetAttribute("replyemail") != string.Empty)
									{
										InitReplyTo();
										this.Message.ReplyTo.Email = reader.GetAttribute("replyemail");
									}

									if (reader.GetAttribute("RECEIPTEMAIL") != null && reader.GetAttribute("RECEIPTEMAIL") != string.Empty)
									{
										this.Message.ReturnReceipt.Email = reader.GetAttribute("RECEIPTEMAIL");
									}
									else if (reader.GetAttribute("receiptemail") != null && reader.GetAttribute("receiptemail") != string.Empty)
									{
										this.Message.ReturnReceipt.Email = reader.GetAttribute("receiptemail");
									}
								}

								switch (reader.Name.ToUpper())
								{
									case "FROM": /*this.Message.From.Add(address);*/this.Message.From = address; break;
									case "TO": this.Message.To.Add(address); break;
									case "CC": this.Message.Cc.Add(address); break;
									case "BCC": this.Message.Bcc.Add(address); break;
								}
							}
							break;
						case "LISTTEMPLATE":
						{
							ListTemplate template = new ListTemplate(); 
							string RegionID = string.Empty;
							string NullText = string.Empty;
							if (reader.GetAttribute("REGIONID") != null && reader.GetAttribute("REGIONID") != string.Empty)
								RegionID = reader.GetAttribute("REGIONID");
							else if (reader.GetAttribute("regionid") != null && reader.GetAttribute("regionid") != string.Empty)
								RegionID = reader.GetAttribute("regionid");

							if (reader.GetAttribute("NULLTEXT") != null && reader.GetAttribute("NULLTEXT") != string.Empty)
								NullText = reader.GetAttribute("NULLTEXT");
							else if (reader.GetAttribute("nulltext") != null && reader.GetAttribute("nulltext") != string.Empty)
								NullText = reader.GetAttribute("nulltext");

							if (reader.HasAttributes && reader.GetAttribute("NAME") != null && reader.GetAttribute("NAME") != string.Empty)
								template = new ListTemplate(reader.GetAttribute("NAME"), reader.ReadString());
							else if (reader.HasAttributes && reader.GetAttribute("name") != null && reader.GetAttribute("name") != string.Empty)
								template = new ListTemplate(reader.GetAttribute("name"), reader.ReadString());
							
							template.RegionID = RegionID;
							template.NullText = NullText;

							this.ListTemplates.Add(template);

						} break;

						case "SMTPSERVER":
						{
							Server server = new Server(); 

							if (reader.GetAttribute("SERVER") != null && reader.GetAttribute("SERVER") != string.Empty)
								server.Host = reader.GetAttribute("SERVER");
							else if (reader.GetAttribute("server") != null && reader.GetAttribute("server") != string.Empty)
								server.Host = reader.GetAttribute("server");

							if (reader.GetAttribute("PORT") != null && reader.GetAttribute("PORT") != string.Empty)
								server.Port = int.Parse(reader.GetAttribute("PORT"));
							else if (reader.GetAttribute("port") != null && reader.GetAttribute("port") != string.Empty)
								server.Port = int.Parse(reader.GetAttribute("port"));
	
							if (reader.GetAttribute("USERNAME") != null && reader.GetAttribute("USERNAME") != string.Empty)
								server.Username = reader.GetAttribute("USERNAME");
							else if (reader.GetAttribute("username") != null && reader.GetAttribute("username") != string.Empty)
								server.Username = reader.GetAttribute("username");

							if (reader.GetAttribute("PASSWORD") != null && reader.GetAttribute("PASSWORD") != string.Empty)
								server.Password = reader.GetAttribute("PASSWORD");
							else if (reader.GetAttribute("password") != null && reader.GetAttribute("password") != string.Empty)
								server.Password = reader.GetAttribute("password");	

							SmtpServers.Add(server);

						} break;

						case "CONDITION":
						{
							Condition condition = new Condition(); 

							if (reader.GetAttribute("REGIONID") != null && reader.GetAttribute("REGIONID") != string.Empty)
								condition.RegionID = reader.GetAttribute("REGIONID");
							else if (reader.GetAttribute("regionid") != null && reader.GetAttribute("regionid") != string.Empty)
								condition.RegionID = reader.GetAttribute("regionid");

							if (reader.GetAttribute("OPERATOR") != null && reader.GetAttribute("OPERATOR") != string.Empty)
								condition.Operator = (OperatorType)Enum.Parse(typeof(OperatorType), reader.GetAttribute("OPERATOR"), true); 
							else if (reader.GetAttribute("operator") != null && reader.GetAttribute("operator") != string.Empty)
								condition.Operator = (OperatorType)Enum.Parse(typeof(OperatorType), reader.GetAttribute("operator"), true); 

							if (reader.GetAttribute("NULLTEXT") != null && reader.GetAttribute("NULLTEXT") != string.Empty)
								condition.NullText = reader.GetAttribute("NULLTEXT");
							else if (reader.GetAttribute("nulltext") != null && reader.GetAttribute("nulltext") != string.Empty)
								condition.NullText = reader.GetAttribute("nulltext");

							if (reader.GetAttribute("FIELD") != null && reader.GetAttribute("FIELD") != string.Empty)
								condition.Field = reader.GetAttribute("FIELD");
							else if (reader.GetAttribute("field") != null && reader.GetAttribute("field") != string.Empty)
								condition.Field = reader.GetAttribute("field");

							if (reader.GetAttribute("VALUE") != null && reader.GetAttribute("VALUE") != string.Empty)
								condition.Value = reader.GetAttribute("VALUE");
							else if (reader.GetAttribute("value") != null && reader.GetAttribute("value") != string.Empty)
								condition.Value = reader.GetAttribute("value");	

							if (reader.GetAttribute("CASESENSITIVE") != null && reader.GetAttribute("CASESENSITIVE") != string.Empty)
								condition.CaseSensitive = bool.Parse(reader.GetAttribute("CASESENSITIVE"));
							else if (reader.GetAttribute("casesensitive") != null && reader.GetAttribute("casesensitive") != string.Empty)
								condition.CaseSensitive = bool.Parse(reader.GetAttribute("casesensitive"));
	
							Conditions.Add(condition);

						} break;

						case "REGION":
						{
							Region region = new Region(); 

							if (reader.GetAttribute("REGIONID") != null && reader.GetAttribute("REGIONID") != string.Empty)
								region.RegionID = reader.GetAttribute("REGIONID");
							else if (reader.GetAttribute("regionid") != null && reader.GetAttribute("regionid") != string.Empty)
								region.RegionID = reader.GetAttribute("regionid");

							if (reader.GetAttribute("NULLTEXT") != null && reader.GetAttribute("NULLTEXT") != string.Empty)
								region.NullText = reader.GetAttribute("NULLTEXT");
							else if (reader.GetAttribute("nulltext") != null && reader.GetAttribute("nulltext") != string.Empty)
								region.NullText = reader.GetAttribute("nulltext");

							if (reader.GetAttribute("URL") != null && reader.GetAttribute("URL") != string.Empty)
								region.URL = reader.GetAttribute("URL");
							else if (reader.GetAttribute("url") != null && reader.GetAttribute("url") != string.Empty)
								region.URL = reader.GetAttribute("url");

							Regions.Add(region);

						} break;

					} break;
					case XmlNodeType.Text:
					switch (element.ToUpper())
					{
						case "SUBJECT":
							this.Message.Subject += reader.Value;
							break;
						/*case "SMTPSERVER":
							this.SmtpServers.Add(reader.Value, 25);
							break;*/
						case "BODYHTML":
							//this.Bodies.Add(reader.Value, BodyFormat.Html);
							this.Message.BodyHtml.Text += reader.Value;
							break;
						case "BODYTEXT":
							//this.Bodies.Add(reader.Value, BodyFormat.Text);
							this.Message.BodyText.Text += reader.Value;
							break;
					}
						break;
					case XmlNodeType.EndElement:
						element = string.Empty;
						break;
				}       
			}
		}
		/// <summary>
		/// Add an Region object in the collection.
		/// </summary>
		/// <param name="region">The Region.</param>
		public void Add(Region region)
		{
			List.Add(region);
		}
Example #3
0
        /*/// <summary>
         * /// Process the Text template.
         * /// </summary>
         * private void ProcessTextTemplate(string content)
         * {
         *      ActiveUp.Net.Mail.Logger.AddEntry("Processing the TEXT template.", 1);
         *
         *      // Initialize strings to be used later
         *      string line = string.Empty, lineUpper = string.Empty;
         *
         *      // Initialize the StringReader to read line per line
         *      StringReader reader = new StringReader(content);
         *
         *      // Initialize the actual body count
         *      int bodyCount = _bodies.Count, lineNumber = 0;
         *
         *      // Read and parse each line. Append the data in the properties.
         *      while (reader.Peek() > -1)
         *      {
         *              ActiveUp.Net.Mail.Logger.AddEntry("Line parsed. Body count: + " + bodyCount.ToString() + ".", 0);
         *
         *              line = reader.ReadLine();
         *              lineNumber++;
         *              lineUpper = line.ToUpper();
         *
         *              // If a property, then set value
         *              if (lineUpper.StartsWith("TO:"))
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("TO property found: + " + line + " (raw).", 0);
         *                      this.Message.To.Add(Parser.ParseAddress(ExtractValue(line)));
         *              }
         *              else if (lineUpper.StartsWith("BCC:"))
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("BCC property found: + " + line + " (raw).", 0);
         *                      this.Message.Bcc.Add(Parser.ParseAddress(ExtractValue(line)));
         *              }
         *              else if (lineUpper.StartsWith("CC:"))
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("CC property found: + " + line + " (raw).", 0);
         *                      this.Message.Cc.Add(Parser.ParseAddress(ExtractValue(line)));
         *              }
         *              else if (lineUpper.StartsWith("FROM:"))
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("FROM property found: + " + line + " (raw).", 0);
         *                      this.Message.From = Parser.ParseAddress(ExtractValue(line));
         *              }
         *              else if (lineUpper.StartsWith("SUBJECT:"))
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("SUBJECT property found: + " + line + " (raw).", 0);
         *                      this.Message.Subject += ExtractValue(line);
         *              }
         *              else if (lineUpper.StartsWith("SMTPSERVER:"))
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("SMTPSERVER property found: + " + line + " (raw).", 0);
         *                      this.SmtpServers.Add(ExtractValue(line), 25);
         *              }
         *              else if (lineUpper.StartsWith("BODYTEXT:"))
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("BODYTEXT property found: + " + line + " (raw).", 0);
         *                      this.Bodies.Add(ExtractValue(line), BodyFormat.Text);
         *                      bodyCount++;
         *              }
         *              else if (lineUpper.StartsWith("BODYHTML:"))
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("BODYHTML property found: + " + line + " (raw).", 0);
         *                      this.Bodies.Add(ExtractValue(line), BodyFormat.Html);
         *                      bodyCount++;
         *              }
         *              else if (lineUpper.StartsWith("FIELDFORMAT:") && lineUpper.IndexOf("=") > -1)
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("FIELDFORMAT property found: + " + line + " (raw).", 0);
         *                      this.FieldsFormats.Add(ExtractFormat(line));
         *              }
         *              else if (lineUpper.StartsWith("//"))
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("COMMENT line found: + " + line + " (raw).", 0);
         *                      // Line is a comment, so do nothing
         *              }
         *                      // If not a property, then it's a message line
         *              else
         *              {
         *                      ActiveUp.Net.Mail.Logger.AddEntry("BODY line found: + " + line + " (raw).", 0);
         *                      this.Bodies[bodyCount-1].Content += line + "\r\n";
         *              }
         *      }
         * }*/

        /*/// <summary>
         * /// Extract the format options from a text template line.
         * /// </summary>
         * /// <param name="line">The text template line.</param>
         * /// <returns>A FieldFormat object with the options.</returns>
         * private FieldFormat ExtractFormat(string line)
         * {
         *      ActiveUp.Net.Mail.Logger.AddEntry("Extracting FieldFormat from line: + " + line + " (raw).", 0);
         *
         *      FieldFormat fieldFormat = new FieldFormat();
         *      string property, val;
         *
         *      foreach(string format in ExtractValue(line).Split(';'))
         *      {
         *              string[] lineSplit = format.Split('=');
         *
         *              if (lineSplit.Length > 1)
         *              {
         *                      property = lineSplit[0];
         *                      val = lineSplit[1];
         *
         *                      switch (property.ToUpper())
         *                      {
         *                              case "NAME": fieldFormat.Name = val; break;
         *                              case "FORMAT": fieldFormat.Format = val; break;
         *                              case "PADDINGDIR":
         *                                      if (val.ToUpper() == "LEFT")
         *                                              fieldFormat.PaddingDir = PaddingDirection.Left;
         *                                      else
         *                                              fieldFormat.PaddingDir = PaddingDirection.Right;
         *                                      break;
         *                              case "TOTALWIDTH":
         *                                      try
         *                                      {
         *                                              fieldFormat.TotalWidth = Convert.ToInt16(val);
         *                                      }
         *                                      catch
         *                                      {
         *                                              throw new Exception("Specified Total Width is not a valid number.");
         *                                      }
         *                                      break;
         *                              case "PADDINGCHAR": fieldFormat.PaddingChar = Convert.ToChar(val.Substring(0, 1)); break;
         *                      }
         *
         *              }// End if line split length > 1
         *      }
         *
         *      return fieldFormat;
         * }*/

        /// <summary>
        /// Process the Xml template.
        /// </summary>
        private void ProcessXmlTemplate(string content)
        {
            ActiveUp.Net.Mail.Logger.AddEntry("Processing the XML template.", 1);

            StringReader  stringReader = new StringReader(content);
            XmlTextReader reader       = new XmlTextReader(stringReader);

            string element = string.Empty;

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    element = reader.Name;
                    ActiveUp.Net.Mail.Logger.AddEntry("New element found: " + element + ".", 0);

                    switch (element.ToUpper())
                    {
                    case "MESSAGE":
                    {
                        if (reader.GetAttribute("PRIORITY") != null && reader.GetAttribute("PRIORITY") != string.Empty)
                        {
                            this.Message.Priority = (MessagePriority)Enum.Parse(typeof(MessagePriority), reader.GetAttribute("PRIORITY"), true);
                        }
                        else if (reader.GetAttribute("priority") != null && reader.GetAttribute("priority") != string.Empty)
                        {
                            this.Message.Priority = (MessagePriority)Enum.Parse(typeof(MessagePriority), reader.GetAttribute("priority"), true);
                        }
                    } break;

                    case "FIELDFORMAT":
                        if (reader.HasAttributes)
                        {
                            ActiveUp.Net.Mail.Logger.AddEntry("Element has attributes.", 0);
                            FieldFormat fieldFormat = new FieldFormat();

                            if (reader.GetAttribute("NAME") != null && reader.GetAttribute("NAME") != string.Empty)
                            {
                                fieldFormat.Name = reader.GetAttribute("NAME");
                                ActiveUp.Net.Mail.Logger.AddEntry("Attribute NAME: " + fieldFormat.Name, 0);
                            }

                            else if (reader.GetAttribute("name") != null && reader.GetAttribute("name") != string.Empty)
                            {
                                fieldFormat.Name = reader.GetAttribute("name");
                                ActiveUp.Net.Mail.Logger.AddEntry("Attribute name: " + fieldFormat.Name, 0);
                            }

                            if (reader.GetAttribute("FORMAT") != null && reader.GetAttribute("FORMAT") != string.Empty)
                            {
                                fieldFormat.Format = reader.GetAttribute("FORMAT");
                                ActiveUp.Net.Mail.Logger.AddEntry("Attribute FORMAT: " + fieldFormat.Format, 0);
                            }

                            else if (reader.GetAttribute("format") != null && reader.GetAttribute("format") != string.Empty)
                            {
                                fieldFormat.Format = reader.GetAttribute("format");
                                ActiveUp.Net.Mail.Logger.AddEntry("Attribute format: " + fieldFormat.Format, 0);
                            }

                            if (reader.GetAttribute("PADDINGDIR") != null && reader.GetAttribute("PADDINGDIR") != string.Empty)
                            {
                                if (reader.GetAttribute("PADDINGDIR").ToUpper() == "LEFT")
                                {
                                    fieldFormat.PaddingDir = PaddingDirection.Left;
                                }
                                else
                                {
                                    fieldFormat.PaddingDir = PaddingDirection.Right;
                                }
                                ActiveUp.Net.Mail.Logger.AddEntry("Attribute PADDINGDIR: " + reader.GetAttribute("PADDINGDIR"), 0);
                            }

                            else if (reader.GetAttribute("paddingdir") != null && reader.GetAttribute("paddingdir") != string.Empty)
                            {
                                if (reader.GetAttribute("paddingdir").ToUpper() == "left")
                                {
                                    fieldFormat.PaddingDir = PaddingDirection.Left;
                                }
                                else
                                {
                                    fieldFormat.PaddingDir = PaddingDirection.Right;
                                }
                                ActiveUp.Net.Mail.Logger.AddEntry("Attribute paddingdir: " + reader.GetAttribute("paddingdir"), 0);
                            }

                            if (reader.GetAttribute("TOTALWIDTH") != null && reader.GetAttribute("TOTALWIDTH") != string.Empty)
                            {
                                try
                                {
                                    fieldFormat.TotalWidth = Convert.ToInt16(reader.GetAttribute("TOTALWIDTH"));
                                }
                                catch
                                {
                                    throw new Exception("Specified Total Width is not a valid number.");
                                }
                                ActiveUp.Net.Mail.Logger.AddEntry("Attribute TOTALWIDTH: " + fieldFormat.TotalWidth.ToString(), 0);
                            }

                            else if (reader.GetAttribute("totalwidth") != null && reader.GetAttribute("totalwidth") != string.Empty)
                            {
                                try
                                {
                                    fieldFormat.TotalWidth = Convert.ToInt16(reader.GetAttribute("totalwidth"));
                                }
                                catch
                                {
                                    throw new Exception("Specified Total Width is not a valid number.");
                                }
                                ActiveUp.Net.Mail.Logger.AddEntry("Attribute totalwidth: " + fieldFormat.TotalWidth.ToString(), 0);
                            }

                            if (reader.GetAttribute("PADDINGCHAR") != null && reader.GetAttribute("PADDINGCHAR") != string.Empty)
                            {
                                fieldFormat.PaddingChar = Convert.ToChar(reader.GetAttribute("PADDINGCHAR").Substring(0, 1));
                                ActiveUp.Net.Mail.Logger.AddEntry("Attribute PADDINGCHAR: '" + fieldFormat.PaddingChar + "'", 0);
                            }

                            else if (reader.GetAttribute("paddingchar") != null && reader.GetAttribute("paddingchar") != string.Empty)
                            {
                                fieldFormat.PaddingChar = Convert.ToChar(reader.GetAttribute("paddingchar").Substring(0, 1));
                                ActiveUp.Net.Mail.Logger.AddEntry("Attribute paddingchar: '" + fieldFormat.PaddingChar + "'", 0);
                            }

                            this.FieldsFormats.Add(fieldFormat);
                        }

                        break;

                    case "FROM":
                    case "TO":
                    case "CC":
                    case "BCC":
                        if (reader.HasAttributes)
                        {
                            ActiveUp.Net.Mail.Address address = new ActiveUp.Net.Mail.Address();
                            if (reader.GetAttribute("NAME") != null && reader.GetAttribute("NAME") != string.Empty)
                            {
                                address.Name = reader.GetAttribute("NAME");
                            }
                            else if (reader.GetAttribute("name") != null && reader.GetAttribute("name") != string.Empty)
                            {
                                address.Name = reader.GetAttribute("name");
                            }
                            if (reader.GetAttribute("EMAIL") != null && reader.GetAttribute("EMAIL") != string.Empty)
                            {
                                address.Email = reader.GetAttribute("EMAIL");
                            }
                            else if (reader.GetAttribute("email") != null && reader.GetAttribute("email") != string.Empty)
                            {
                                address.Email = reader.GetAttribute("email");
                            }
                            if (element.ToUpper() == "FROM")
                            {
                                if (reader.GetAttribute("REPLYNAME") != null && reader.GetAttribute("REPLYNAME") != string.Empty)
                                {
                                    InitReplyTo();
                                    this.Message.ReplyTo.Name = reader.GetAttribute("REPLYNAME");
                                }
                                else if (reader.GetAttribute("replyname") != null && reader.GetAttribute("replyname") != string.Empty)
                                {
                                    InitReplyTo();
                                    this.Message.ReplyTo.Name = reader.GetAttribute("replyname");
                                }

                                if (reader.GetAttribute("REPLYEMAIL") != null && reader.GetAttribute("REPLYEMAIL") != string.Empty)
                                {
                                    InitReplyTo();
                                    this.Message.ReplyTo.Email = reader.GetAttribute("REPLYEMAIL");
                                }
                                else if (reader.GetAttribute("replyemail") != null && reader.GetAttribute("replyemail") != string.Empty)
                                {
                                    InitReplyTo();
                                    this.Message.ReplyTo.Email = reader.GetAttribute("replyemail");
                                }

                                if (reader.GetAttribute("RECEIPTEMAIL") != null && reader.GetAttribute("RECEIPTEMAIL") != string.Empty)
                                {
                                    this.Message.ReturnReceipt.Email = reader.GetAttribute("RECEIPTEMAIL");
                                }
                                else if (reader.GetAttribute("receiptemail") != null && reader.GetAttribute("receiptemail") != string.Empty)
                                {
                                    this.Message.ReturnReceipt.Email = reader.GetAttribute("receiptemail");
                                }
                            }

                            switch (reader.Name.ToUpper())
                            {
                            case "FROM": /*this.Message.From.Add(address);*/ this.Message.From = address; break;

                            case "TO": this.Message.To.Add(address); break;

                            case "CC": this.Message.Cc.Add(address); break;

                            case "BCC": this.Message.Bcc.Add(address); break;
                            }
                        }
                        break;

                    case "LISTTEMPLATE":
                    {
                        ListTemplate template = new ListTemplate();
                        string       RegionID = string.Empty;
                        string       NullText = string.Empty;
                        if (reader.GetAttribute("REGIONID") != null && reader.GetAttribute("REGIONID") != string.Empty)
                        {
                            RegionID = reader.GetAttribute("REGIONID");
                        }
                        else if (reader.GetAttribute("regionid") != null && reader.GetAttribute("regionid") != string.Empty)
                        {
                            RegionID = reader.GetAttribute("regionid");
                        }

                        if (reader.GetAttribute("NULLTEXT") != null && reader.GetAttribute("NULLTEXT") != string.Empty)
                        {
                            NullText = reader.GetAttribute("NULLTEXT");
                        }
                        else if (reader.GetAttribute("nulltext") != null && reader.GetAttribute("nulltext") != string.Empty)
                        {
                            NullText = reader.GetAttribute("nulltext");
                        }

                        if (reader.HasAttributes && reader.GetAttribute("NAME") != null && reader.GetAttribute("NAME") != string.Empty)
                        {
                            template = new ListTemplate(reader.GetAttribute("NAME"), reader.ReadString());
                        }
                        else if (reader.HasAttributes && reader.GetAttribute("name") != null && reader.GetAttribute("name") != string.Empty)
                        {
                            template = new ListTemplate(reader.GetAttribute("name"), reader.ReadString());
                        }

                        template.RegionID = RegionID;
                        template.NullText = NullText;

                        this.ListTemplates.Add(template);
                    } break;

                    case "SMTPSERVER":
                    {
                        Server server = new Server();

                        if (reader.GetAttribute("SERVER") != null && reader.GetAttribute("SERVER") != string.Empty)
                        {
                            server.Host = reader.GetAttribute("SERVER");
                        }
                        else if (reader.GetAttribute("server") != null && reader.GetAttribute("server") != string.Empty)
                        {
                            server.Host = reader.GetAttribute("server");
                        }

                        if (reader.GetAttribute("PORT") != null && reader.GetAttribute("PORT") != string.Empty)
                        {
                            server.Port = int.Parse(reader.GetAttribute("PORT"));
                        }
                        else if (reader.GetAttribute("port") != null && reader.GetAttribute("port") != string.Empty)
                        {
                            server.Port = int.Parse(reader.GetAttribute("port"));
                        }

                        if (reader.GetAttribute("USERNAME") != null && reader.GetAttribute("USERNAME") != string.Empty)
                        {
                            server.Username = reader.GetAttribute("USERNAME");
                        }
                        else if (reader.GetAttribute("username") != null && reader.GetAttribute("username") != string.Empty)
                        {
                            server.Username = reader.GetAttribute("username");
                        }

                        if (reader.GetAttribute("PASSWORD") != null && reader.GetAttribute("PASSWORD") != string.Empty)
                        {
                            server.Password = reader.GetAttribute("PASSWORD");
                        }
                        else if (reader.GetAttribute("password") != null && reader.GetAttribute("password") != string.Empty)
                        {
                            server.Password = reader.GetAttribute("password");
                        }

                        SmtpServers.Add(server);
                    } break;

                    case "CONDITION":
                    {
                        Condition condition = new Condition();

                        if (reader.GetAttribute("REGIONID") != null && reader.GetAttribute("REGIONID") != string.Empty)
                        {
                            condition.RegionID = reader.GetAttribute("REGIONID");
                        }
                        else if (reader.GetAttribute("regionid") != null && reader.GetAttribute("regionid") != string.Empty)
                        {
                            condition.RegionID = reader.GetAttribute("regionid");
                        }

                        if (reader.GetAttribute("OPERATOR") != null && reader.GetAttribute("OPERATOR") != string.Empty)
                        {
                            condition.Operator = (OperatorType)Enum.Parse(typeof(OperatorType), reader.GetAttribute("OPERATOR"), true);
                        }
                        else if (reader.GetAttribute("operator") != null && reader.GetAttribute("operator") != string.Empty)
                        {
                            condition.Operator = (OperatorType)Enum.Parse(typeof(OperatorType), reader.GetAttribute("operator"), true);
                        }

                        if (reader.GetAttribute("NULLTEXT") != null && reader.GetAttribute("NULLTEXT") != string.Empty)
                        {
                            condition.NullText = reader.GetAttribute("NULLTEXT");
                        }
                        else if (reader.GetAttribute("nulltext") != null && reader.GetAttribute("nulltext") != string.Empty)
                        {
                            condition.NullText = reader.GetAttribute("nulltext");
                        }

                        if (reader.GetAttribute("FIELD") != null && reader.GetAttribute("FIELD") != string.Empty)
                        {
                            condition.Field = reader.GetAttribute("FIELD");
                        }
                        else if (reader.GetAttribute("field") != null && reader.GetAttribute("field") != string.Empty)
                        {
                            condition.Field = reader.GetAttribute("field");
                        }

                        if (reader.GetAttribute("VALUE") != null && reader.GetAttribute("VALUE") != string.Empty)
                        {
                            condition.Value = reader.GetAttribute("VALUE");
                        }
                        else if (reader.GetAttribute("value") != null && reader.GetAttribute("value") != string.Empty)
                        {
                            condition.Value = reader.GetAttribute("value");
                        }

                        if (reader.GetAttribute("CASESENSITIVE") != null && reader.GetAttribute("CASESENSITIVE") != string.Empty)
                        {
                            condition.CaseSensitive = bool.Parse(reader.GetAttribute("CASESENSITIVE"));
                        }
                        else if (reader.GetAttribute("casesensitive") != null && reader.GetAttribute("casesensitive") != string.Empty)
                        {
                            condition.CaseSensitive = bool.Parse(reader.GetAttribute("casesensitive"));
                        }

                        Conditions.Add(condition);
                    } break;

                    case "REGION":
                    {
                        Region region = new Region();

                        if (reader.GetAttribute("REGIONID") != null && reader.GetAttribute("REGIONID") != string.Empty)
                        {
                            region.RegionID = reader.GetAttribute("REGIONID");
                        }
                        else if (reader.GetAttribute("regionid") != null && reader.GetAttribute("regionid") != string.Empty)
                        {
                            region.RegionID = reader.GetAttribute("regionid");
                        }

                        if (reader.GetAttribute("NULLTEXT") != null && reader.GetAttribute("NULLTEXT") != string.Empty)
                        {
                            region.NullText = reader.GetAttribute("NULLTEXT");
                        }
                        else if (reader.GetAttribute("nulltext") != null && reader.GetAttribute("nulltext") != string.Empty)
                        {
                            region.NullText = reader.GetAttribute("nulltext");
                        }

                        if (reader.GetAttribute("URL") != null && reader.GetAttribute("URL") != string.Empty)
                        {
                            region.URL = reader.GetAttribute("URL");
                        }
                        else if (reader.GetAttribute("url") != null && reader.GetAttribute("url") != string.Empty)
                        {
                            region.URL = reader.GetAttribute("url");
                        }

                        Regions.Add(region);
                    } break;
                    }
                    break;

                case XmlNodeType.Text:
                    switch (element.ToUpper())
                    {
                    case "SUBJECT":
                        this.Message.Subject += reader.Value;
                        break;

                    /*case "SMTPSERVER":
                     *      this.SmtpServers.Add(reader.Value, 25);
                     *      break;*/
                    case "BODYHTML":
                        //this.Bodies.Add(reader.Value, BodyFormat.Html);
                        this.Message.BodyHtml.Text += reader.Value;
                        break;

                    case "BODYTEXT":
                        //this.Bodies.Add(reader.Value, BodyFormat.Text);
                        this.Message.BodyText.Text += reader.Value;
                        break;
                    }
                    break;

                case XmlNodeType.EndElement:
                    element = string.Empty;
                    break;
                }
            }
        }