private static void SendMailRBC2(string sAsunto, string sTexto, string sTO) { System.Text.StringBuilder strb = new System.Text.StringBuilder(); sTexto = sTexto.Replace("-", "-"); sAsunto = sAsunto.Replace("-", "-"); strb.Append("<?xml version='1.0' encoding='UTF-8'?>\r\n"); strb.Append("<Email>\r\n"); strb.Append("<App>PROGRESS</App>\r\n"); strb.Append("<RcptTo>" + sTO + "</RcptTo>\r\n"); strb.Append("<Subject><!--" + sAsunto + "--></Subject>\r\n"); strb.Append("<Body><!--" + sTexto + "--></Body>\r\n"); strb.Append("<BodyFormat>H</BodyFormat>\r\n"); strb.Append("</Email>\r\n"); svcEmail.svcEmail MySvcEmail = new svcEmail.svcEmail(); string certPath = HttpContext.Current.Request.MapPath("~/Certificado"); if (!certPath.EndsWith("\\")) { certPath += "\\"; } MySvcEmail.ClientCertificates.Add(new X509Certificate2(certPath + "RHNET.pfx", "igueldo")); string xmlretval = ""; try { xmlretval = MySvcEmail.SendMessage(strb.ToString()); } catch (Exception ex) { //el servicio ROBOCOR2 está caido. Avisar a EDA por smtp System.Net.Mail.MailMessage objMail = new System.Net.Mail.MailMessage(); string msgex = ex.Message; if (ex.InnerException != null) { msgex = msgex + " ::: " + ex.InnerException.Message; } objMail.From = new MailAddress("*****@*****.**"); objMail.To.Add(new MailAddress("*****@*****.**")); objMail.Subject = "No se puede establecer una conexión con ROBOCOR2"; objMail.IsBodyHtml = false; objMail.Body = msgex; SmtpClient myClient = new SmtpClient(ConfigurationManager.AppSettings["ServidorSMTP"]); myClient.Send(objMail); throw new Exception("La operación se realizó correctamente pero no se pudo conectar con el servicio de mensajería para avisar a las partes implicadas.", new Exception(msgex)); } finally { } //Validar la respuesta XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(xmlretval); int errnum = int.Parse(xmldoc.SelectSingleNode("/Datos/Error").InnerText); //Si error de envío... if (errnum > 0) { string errmotivo = ""; switch (errnum) { case 1: errmotivo = "Error general."; break; case 2: errmotivo = "Aplicación no permitida."; break; case 3: errmotivo = "Mensaje mal formado."; break; case 4: errmotivo = "Destinatarios no existentes."; break; } //error aplicación no permitidida, mal configurada o certificado erroneo. System.Net.Mail.MailMessage objMail = new System.Net.Mail.MailMessage(); objMail.From = new MailAddress("*****@*****.**"); objMail.To.Add(new MailAddress("*****@*****.**")); objMail.Subject = "PROGRESS: Error en envío de emails. Error " + errnum + ". " + errmotivo; objMail.IsBodyHtml = false; objMail.Body = xmldoc.SelectSingleNode("/Datos/Message").InnerText; if (errnum == 4) { objMail.Body += "\n\nEmailID: " + xmldoc.SelectSingleNode("/Datos/Emailid").InnerText; } SmtpClient myClient = new SmtpClient(ConfigurationManager.AppSettings["ServidorSMTP"]); myClient.Send(objMail); throw new Exception("La operación se realizó correctamente pero no se pudo conectar con el servicio de mensajería para avisar a los destinatarios del correo. Motivo: " + errmotivo, new Exception(xmldoc.SelectSingleNode("/Datos/Message").InnerText)); } }
private static void SendMailRBC2(string sAsunto, string sTexto, string sTO, string sFich, string sCC, string sCCO) { System.Text.StringBuilder strb = new System.Text.StringBuilder(); string sRteError = SUPER.Capa_Negocio.Errores.RteMailError(); string sToError = SUPER.Capa_Negocio.Errores.DestMailError(); //sTO = sTO.Replace(@"/",";"); //formatear los br (el body debe ser xhtml) //sTexto = sTexto.Replace("<br />", "<br />"); sTexto = sTexto.Replace("-", "-"); sAsunto = sAsunto.Replace("-", "-"); strb.Append("<?xml version='1.0' encoding='UTF-8'?>\r\n"); strb.Append("<Email>\r\n"); strb.Append("<App>SUPER</App>\r\n"); strb.Append("<RcptTo>" + sTO + "</RcptTo>\r\n"); strb.Append("<Cc>" + sCC + "</Cc>\r\n"); strb.Append("<Cco>" + sCCO + "</Cco>\r\n"); strb.Append("<Subject><!--" + sAsunto + "--></Subject>\r\n"); strb.Append("<Body><!--" + sTexto + "--></Body>\r\n"); strb.Append("<BodyFormat>H</BodyFormat>\r\n"); strb.Append("<Adjuntos>\r\n"); if (sFich != "") { strb.Append("<Adjunto>"); strb.Append("<Nombre>" + new FileInfo(sFich).Name + "</Nombre>"); strb.Append("<Fichero>" + EncodeFile(sFich) + "</Fichero>"); strb.Append("</Adjunto>"); } strb.Append("</Adjuntos>\r\n"); strb.Append("</Email>\r\n"); svcEmail.svcEmail MySvcEmail = new svcEmail.svcEmail(); //string certPath = System.Web.HttpContext.Current.Request.MapPath("~/Certificado"); string certPath = ConfigurationManager.AppSettings["CertificadoPath"].ToString(); if (!certPath.EndsWith("\\")) { certPath += "\\"; } MySvcEmail.ClientCertificates.Add(new X509Certificate2(certPath + "SUPER.pfx", "igueldo")); string xmlretval = ""; try { xmlretval = MySvcEmail.SendMessage(strb.ToString()); } catch (Exception ex) { //el servicio ROBOCOR2 está caido. Avisar a EDA por smtp MailMessage objMail = new MailMessage(); string msgex = ex.Message; if (ex.InnerException != null) { msgex = msgex + " ::: " + ex.InnerException.Message; } //objMail.From = new MailAddress("*****@*****.**"); //objMail.To.Add(new MailAddress("*****@*****.**")); objMail.From = new MailAddress(sRteError); objMail.To.Add(new MailAddress(sToError)); objMail.Subject = "No se puede establecer una conexión con ROBOCOR2"; objMail.IsBodyHtml = false; objMail.Body = msgex; SmtpClient myClient = new SmtpClient(System.Configuration.ConfigurationManager.AppSettings["ServidorSMTP"]); myClient.Send(objMail); throw new Exception("La operación se realizó correctamente pero no se pudo conectar con el servicio de mensajería para avisar a los destinatarios del correo.", new Exception(msgex)); } finally { //11/11/2014: No se borran ficheros. Se pasará un proceso nocturno que borre lo que proceda. //if (sFich != "") //{ // //Si se ha enviado algún fichero adjunto, hay que eliminarlo. // try // { // File.Delete(sFich); // } // catch { } //} } //Validar la respuesta XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(xmlretval); int errnum = int.Parse(xmldoc.SelectSingleNode("/Datos/Error").InnerText); //Si error de envío... if (errnum > 0) { string errmotivo = ""; switch (errnum) { case 1: errmotivo = "Error general."; break; case 2: errmotivo = "Aplicación no permitida."; break; case 3: errmotivo = "Mensaje mal formado."; break; case 4: errmotivo = "Destinatarios no existentes."; break; } //error aplicación no permitidida, mal configurada o certificado erroneo. MailMessage objMail = new MailMessage(); //objMail.From = new MailAddress("*****@*****.**"); //objMail.To.Add(new MailAddress("*****@*****.**")); objMail.From = new MailAddress(sRteError); objMail.To.Add(new MailAddress(sToError)); objMail.Subject = "SUPER: Error en envío de emails. Error " + errnum + ". " + errmotivo; objMail.IsBodyHtml = false; objMail.Body = xmldoc.SelectSingleNode("/Datos/Message").InnerText; if (errnum == 4) { objMail.Body += "\n\nEmailID: " + xmldoc.SelectSingleNode("/Datos/Emailid").InnerText; } SmtpClient myClient = new SmtpClient(System.Configuration.ConfigurationManager.AppSettings["ServidorSMTP"]); myClient.Send(objMail); throw new Exception("La operación se realizó correctamente pero no se pudo conectar con el servicio de mensajería para avisar a los destinatarios del correo. Motivo: " + errmotivo, new Exception(xmldoc.SelectSingleNode("/Datos/Message").InnerText)); } }