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));
        }
    }
Exemple #2
0
        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("-", "&#45;");
            sAsunto = sAsunto.Replace("-", "&#45;");

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