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); }
/*/// <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); }