/// <summary>
        /// Función que permite enviar un correo de solicitud de talonario al encargado de sorteos
        /// </summary>
        /// <param name="usuario"></param>
        public static void SolicitarTalonario(string usuario)
        {
            Colaborador persona = ColaboradorService.Obtiene(usuario);

            if (persona != null)
            {
                Code.CorreoUtil.Enviar(
                    new string[] { ConfigurationManager.AppSettings["Correo.SolicitudTalonario"] },
                    "Solicitud de Talonario",
                    String.Format("<html><head></head><body><style>body {{ font-family: Arial, Helvetica, Verdana, Tahoma, Sans-Serif; }}</style><p>Solicitud de Talonario:</p><ul><li>Id de Estudiante: <b>{1}</b></li><li>Nombre: <b>{0}</b></li><li>Talonarios: <b>1</b></li></ul></body></html>", persona.nombre_completo, persona.identificador)
                    );
            }
        }
        /// <summary>
        /// Función que obtiene los talonarios de un usuario
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public static Talonario[] ObtienePorUsuario(string usuario)
        {
            List <string>    folios     = new List <string>();
            List <Talonario> talonarios = new List <Talonario>();

            /* Traemos los datos del usuario del cual se quiere obtener los talonarios */
            Colaborador persona = ColaboradorService.Obtiene(usuario);

            /* Traemos los datos del sorteo activo */
            Sorteo sorteo_activo = SorteoService.ObtenerActivo();

            /* Si la persona existe y tenemos un sorteo activo, abrimos la conexión a la base de datos para obtener sus talonarios*/
            if (persona != null && sorteo_activo != null)
            {
                database db = new database();

                /* Traemos los folios de los talonarios digitales asignados a un colaborador en el sorteo activo */
                ResultSet dbTalonarios = db.getTable(String.Format(@"
SELECT tal.FOLIO
FROM TALONARIOS tal
INNER JOIN SORTEOS_COLABORADORES_TALONARIOS ctal
ON tal.PK1 = ctal.PK_TALONARIO
WHERE tal.DIGITAL = 1
AND ctal.PK_SORTEO = {0}
AND ctal.PK_COLABORADOR = {1}
ORDER BY tal.FOLIO", sorteo_activo.clave, persona.clave));

                /* Por cada talonario, agregamos el folio a la lista*/
                while (dbTalonarios.Next())
                {
                    folios.Add(dbTalonarios.Get("FOLIO"));
                }

                db.Close();

                /* Por cada folio obtenido, traemos los datos del talonario*/
                foreach (string folio in folios)
                {
                    /* Traemos los datos del talonario */
                    talonarios.Add(Obtiene(folio, persona.clave));
                }
                ;
            }

            return(talonarios.ToArray());
        }
        /// <summary>
        /// Función que permite enviar un boleto por correo
        /// </summary>
        /// <param name="clave">Clave del boleto al que se le va enviar el correo</param>
        /// <param name="clave_persona">Clave de la persona dueña del talonario</param>
        public static void EnviarBoleto(long clave, long clave_persona)
        {
            /* Traemos los datos del sorteo activo */
            Sorteo sorteo_activo = SorteoService.ObtenerActivo();

            Boleto boleto = ObtieneBoleto(clave, clave_persona);

            Colaborador colaborador = ColaboradorService.ObtienePorClave(clave_persona);

            /* Si el talonario existe, traemos sus datos */
            if (boleto != null && boleto.comprador != null)
            {
                string       urlBoleto = string.Format("{0}/boleto/{1}", ConfigurationManager.AppSettings["App.Url.Base"], boleto.token);
                MemoryStream qrImage   = GenerateQRCode(urlBoleto);

                String nombreArchivo = String.Format("boleto-{0}", boleto.folio);
                System.Net.Mail.Attachment qrAttachment = new System.Net.Mail.Attachment(qrImage, nombreArchivo, System.Net.Mime.MediaTypeNames.Image.Jpeg)
                {
                    ContentId   = String.Format("{0}@anahuac.mx", nombreArchivo),
                    ContentType = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Image.Jpeg),
                    Name        = String.Format("{0}.jpg", nombreArchivo)
                };
                qrAttachment.ContentDisposition.Inline = true;

                System.Drawing.Image frenteBoleto = Bitmap.FromFile(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Imagenes/Boleto_final_Sorteo_2017.png"));
                Graphics             g            = Graphics.FromImage(frenteBoleto);
                g.DrawString(boleto.folio, System.Drawing.SystemFonts.DefaultFont, System.Drawing.Brushes.Black, new RectangleF(832, 13, 85, 29));

                MemoryStream frenteImage = new MemoryStream();
                frenteBoleto.Save(frenteImage, System.Drawing.Imaging.ImageFormat.Jpeg);
                frenteImage.Position = 0;

                System.Net.Mail.Attachment boletoAttach = new System.Net.Mail.Attachment(frenteImage, String.Format("Boleto_final_Sorteo_2017_{0}.jpg", boleto.folio), System.Net.Mime.MediaTypeNames.Image.Jpeg)
                {
                    ContentId = "*****@*****.**"
                };
                boletoAttach.ContentDisposition.Inline = true;

                System.Net.Mail.Attachment reversoAttach = new System.Net.Mail.Attachment(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Imagenes/Boleto_final_Sorteo.png"))
                {
                    ContentId = "*****@*****.**"
                };
                reversoAttach.ContentDisposition.Inline = true;

                System.Net.Mail.Attachment logoAttach = new System.Net.Mail.Attachment(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Imagenes/AHC_Logo-Correo.png"))
                {
                    ContentId = "*****@*****.**"
                };
                logoAttach.ContentDisposition.Inline = true;



                Code.CorreoUtil.Enviar(
                    new string[] { boleto.comprador.correo },
                    String.Format("Sorteo Anáhuac: Boleto {0}", boleto.folio),
                    String.Format(@"<html>
<head>
</head>
<body>
    <style type=""text/css"">
        #boleto-logo img {{
            width: 120px;
        }}

        #contenido-correo {{
            font-family: Tahoma, Verdana, Arial, sans-serif;
            text-align: center;
        }}

        #contenido-correo h3 {{
            color: #ea7200;
            font-style: italic;
            font-size: 1.1em;
        }}

        #contenido-correo p.boleto-descripcion {{
            color: #666;
        }}

        .boletos-conteo {{
            color: #ea7200;
        }}
    
        #boleto-detalle-contenido {{
            margin-top: 1em;
            text-align: center;
        }}

        .boleto-contacto, .boleto-url {{
            color: #666;
            font-size: 0.8em;
        }}

        .boleto-contacto span {{
            color: #000;
            font-size: 1.3em;
            font-weight: bold;
        }}

        #qrURL-boleto, #reverso-boleto {{
            margin-bottom: 1.2em;
        }}

        #frente-boleto img, #reverso-boleto img {{
            width: 75%;
        }}

    </style>
    <div id=""contenido-correo"">
    <p>
        <div id=""boleto-logo""><img src=""cid:{16}"" /></div>
    </p>
    <h2 class=""talonario-boletos-header con-flecha-llamada"">Boleto <span class=""boletos-conteo"">{0}</span></h2>
    <h3>¡Felicidades!</h3>
    <p class=""boleto-descripcion"">Has comprado el <b>boleto {0}</b> del Sorteo Anáhuac.<br/>A continuación te presentamos los datos de tu compra:</p>
    <div id=""boleto-detalle-contenido"">
    <p class=""boleto-contacto"">
        Dueño<br/>
        <span>{1} {2}</span>
    </p>
    <p class=""boleto-contacto"">
        Domicilio:<br/>
        <span>{6}</span> <span>{7}</span><br/>
        <span>{8}</span>, <span>{9}</span>
    </p>
    <p class=""boleto-contacto"">
        Teléfono fijo:<br/>
        <span>{5}</span>
    </p>
    <p class=""boleto-contacto"">
        Teléfono móvil:<br/>
        <span>{4}</span>
    </p>
    <p class=""boleto-contacto"">
        Correo electrónico:<br/>
        <span>{3}</span>
    </p>
    <p class=""boleto-contacto"">
        Cuenta bancaria:<br/>
        <span>{12}</span>
    </p>
    <p class=""boleto-contacto"">
        Referencia bancaria:<br/>
        <span>{13}</span>
    </p>
    <p>
        <div id=""qrURL-boleto""><img src=""cid:{11}"" /></div>
    </p>
    <p class=""boleto-contacto"">
        {17}
    </p>
    <p>
        <div id=""frente-boleto""><img src=""cid:{14}"" /></div>
        <div id=""reverso-boleto""><img src=""cid:{15}"" /></div>
    </p>
    <p class=""boleto-contacto"">
    Para más información, puedes revisar nuestro sitio web en<br/><a href=""http://www.sorteoanahuac.mx/"" target=""_blank"">http://www.sorteoanahuac.mx/</a>.
    </p>
    </div>
    </div>
</body>
<html>",
                                  boleto.folio,
                                  boleto.comprador.nombre,
                                  boleto.comprador.apellidos,
                                  boleto.comprador.correo,
                                  boleto.comprador.celular,
                                  boleto.comprador.direccion.telefono,
                                  boleto.comprador.direccion.calle,
                                  boleto.comprador.direccion.numero,
                                  boleto.comprador.direccion.municipio,
                                  boleto.comprador.direccion.estado,
                                  boleto.token,
                                  qrAttachment.ContentId,
                                  sorteo_activo.cuenta_bancaria,
                                  colaborador.referencia_bancaria,
                                  boletoAttach.ContentId,
                                  reversoAttach.ContentId,
                                  logoAttach.ContentId,
                                  urlBoleto),
                    new System.Net.Mail.Attachment[] { qrAttachment, boletoAttach, reversoAttach, logoAttach });
                return;
            }
        }