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);
        }
Exemple #2
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 Server object in the collection.
		/// </summary>
		public void Add(Server server)
		{
			List.Add(server);
		}