public static string EnviarCorreoRecurso(SqlTransaction tr, string sTipo, string strDatosTarea, string sEtp, string sIni, string sFin,
                                                 string sObs, string sMensGen)
        {
            string        sResul = "";
            ArrayList     aListCorreo = new ArrayList();
            StringBuilder sbuilder = new StringBuilder();
            string        sAsunto = "", sTexto = "", sTO = "";//, sCodRed;

            try
            {
                if (sTipo == "I")
                {
                    sAsunto = "Asignación de profesional a tarea.";
                    sbuilder.Append(@"<BR>SUPER le informa de su asignación a la siguiente tarea:<BR><BR>");
                }
                else
                {
                    sAsunto = "Modificación de profesional de recurso a tarea.";
                    sbuilder.Append(@"<BR>SUPER le informa de la modificación de su asignación a la siguiente tarea:<BR><BR>");
                }

                string[] aDatosTarea = Regex.Split(strDatosTarea, "##");
                //aDatosTarea[1] = hdnIdTarea
                //aDatosTarea[2] = idRecurso
                //aDatosTarea[10] = txtDesTarea
                //aDatosTarea[11] = txtNumPE
                //aDatosTarea[12] = txtPE
                //aDatosTarea[13] = txtPT
                //aDatosTarea[14] = txtFase
                //aDatosTarea[15] = txtActividad
                //aDatosTarea[16] = txtCodPST
                //aDatosTarea[17] = txtDesPST
                //aDatosTarea[18] = txtOTL
                //aDatosTarea[19] = txtIncidencia

                sbuilder.Append("<label style='width:120px'>Proyecto económico: </label>" + aDatosTarea[11] + @" - " + Utilidades.unescape(aDatosTarea[12]) + "<br>");
                sbuilder.Append("<label style='width:120px'>Proyecto Técnico: </label>" + Utilidades.unescape(aDatosTarea[13]) + "<br>");

                if (aDatosTarea[14] != "")
                {
                    sbuilder.Append("<label style='width:120px'>Fase: </label>" + Utilidades.unescape(aDatosTarea[14]) + "<br>");
                }
                if (aDatosTarea[15] != "")
                {
                    sbuilder.Append("<label style='width:120px'>Actividad: </label>" + Utilidades.unescape(aDatosTarea[15]) + "<br>");
                }

                sbuilder.Append("<label style='width:120px'>Tarea: </label><b>" + aDatosTarea[1] + @" - " + Utilidades.unescape(aDatosTarea[10]) + "</b><br><br>");
                sbuilder.Append("<b>Información de la tarea:</b><br><br>");

                if (aDatosTarea[16] != "")
                {
                    sbuilder.Append("<label style='width:120px'>OTC: </label>" + Utilidades.unescape(aDatosTarea[16]) + " - " + Utilidades.unescape(aDatosTarea[17]) + "<br>");
                }
                if (aDatosTarea[18] != "")
                {
                    sbuilder.Append("<label style='width:120px'>OTL: </label>" + Utilidades.unescape(aDatosTarea[18]) + "<br>");
                }
                if (aDatosTarea[19] != "")
                {
                    sbuilder.Append("<label style='width:120px'>Incidencia/Petición: </label>" + Utilidades.unescape(aDatosTarea[19]) + "<br>");
                }
                if ((sEtp == null) || (sEtp == ""))
                {
                    sEtp = "0";
                }
                sbuilder.Append("<label style='width:120px'>Esfuerzo: </label>" + sEtp + " horas<br>");
                if (sIni == "")
                {
                    sbuilder.Append("<label style='width:120px'>F/Inicio: </label>&nbsp;<br>");
                }
                else
                {
                    sbuilder.Append("<label style='width:120px'>F/Inicio: </label>" + sIni.Substring(0, 10) + "<br>");
                }
                if (sFin == "")
                {
                    sbuilder.Append("<label style='width:120px'>F/Fin: </label>&nbsp;<br>");
                }
                else
                {
                    sbuilder.Append("<label style='width:120px'>F/Fin: </label>" + sFin.Substring(0, 10) + "<br>");
                }
                sbuilder.Append("<label style='width:120px'>Indicaciones generales: </label>" + Utilidades.unescape(sMensGen) + "<br>");
                sbuilder.Append("<label style='width:120px'>Indicaciones particulares: </label>" + Utilidades.unescape(sObs) + "<br>");

                //sTO = Utilidades.unescape(aDatosTarea[2]);
                //sCodRed = Recurso.CodigoRed(int.Parse(sTO));
                //sTO = sCodRed.Replace(";", @"/");
                //if (System.Configuration.ConfigurationManager.ConnectionStrings["ENTORNO"].ToString() == "D")
                //{
                //    sTO = HttpContext.Current.Session["IDRED_ENTRADA"].ToString();
                //    sAsunto += " (" + sCodRed + ")";
                //}
                sTO    = SUPER.Capa_Negocio.Recurso.GetDireccionMail(int.Parse(aDatosTarea[2]));
                sTexto = sbuilder.ToString();

                string[] aMail = { sAsunto, sTexto, sTO };
                aListCorreo.Add(aMail);

                Correo.EnviarCorreos(aListCorreo);

                //Si el correo se ha enviado correctamente, para que no lo vuelva a enviar en el proceso nocturno
                //lo borro de la tabla de correos. En la tabla de correos se ha metido a través del trigger en la T336_TAREAPSPUSUARIO
                //Tampoco podemos quitar ese trigger ya que se pueden asignar profesionales a tareas desde otros procesos y/o triggers

                //Lo comento porque parece que da error de interbloqueo
                //SUPER.Capa_Datos.USUARIO.BorrarCorreo(tr, int.Parse(aDatosTarea[2]), 1, true, int.Parse(aDatosTarea[1]));

                sResul = "OK@#@";
            }
            catch (Exception ex)
            {
                sResul = "Error@#@" + Errores.mostrarError("Error al enviar correo de asignación de recurso a tarea. strDatosTarea=" + strDatosTarea, ex);
            }
            return(sResul);
        }