none
Enviar el contenido de un panel por e-mail RRS feed

  • Pregunta

  • Buen día compañeros del foro

    Necesito saber si es posible enviar el contenido de un objeto Panel o algun otro contenedor a través de un e-mail.  El contenido del panel es texto normal, Labels, imágenes y Gridview's con datos de un cliente.  Es posible enviar el contenido cargado en el panel a través de un correo electrónico (y que el contenido del correo sea HMTL para que la persona que recibe el correo pueda verlo exactamente a como se carga en el Panel)?... el método para enviar correos ya lo tengo.

    Si no es posible enviar el contenido de un Panel, cómo podría hacer para enviar la información de algún contenedor a través de e-mail?

    Gracias por su colaboración.
    domingo, 20 de diciembre de 2009 21:32

Todas las respuestas

  • hola

    lo que tendrias que hacer es armar el html que le de formato a la informacion que quieres enviar
    o sea una transformacion directa no hay, lo que debes hacer es armar el html usando tablas, y demas controles que html soporte, para luego en cada celda de la tabla ir ubicando el contenido de tus controles textbox del formulario

    seria una tecnica como la aplicada en este link
    (ASP.NET)Sending mail using SMTP in HTML format using IP settings in web.config file

    seria armar el html como lo hace en la propiedad mailMsg.Body

    es mas igual no te aconsejo que lo armes alli mismo, por ahi define el template del html y luego reemplaces en cada lugar por el dato


    no has especificado lenguaje que utilzias por eso pongo el codigo en c#, en todo caso se puede traducir


    string htmltemplate = @"<html>
                                <body>
                                    <table>
                                        <tr>
                                            <td>Nombre Cliente:</td>
                                            <td>{0}</td>
                                        </tr>
                                        <tr>
                                            <td>Direccion:</td>
                                            <td>{1}</td>
                                        </tr>
                                    </table>
                                </body>
                            </html>";
                           
    string mensaje = htmltemplate.Replace("{0}", txtNombreCliente.Text);                   
    mensaje = mensaje.Replace("{1}", txtDireccion.Text);

    mailMsg.Body = mensaje;


    de esta fotrma veras es mas simple de armar el template e ir reemplazando donde correspondapor el valor de del control en el formulario

    - por supuesto para la grilla la unica que queda es que recorras cada row y en cada iteracion armes el html con los datos

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 20 de diciembre de 2009 22:46
  • hola

    lo que tendrias que hacer es armar el html que le de formato a la informacion que quieres enviar
    o sea una transformacion directa no hay, lo que debes hacer es armar el html usando tablas, y demas controles que html soporte, para luego en cada celda de la tabla ir ubicando el contenido de tus controles textbox del formulario

    seria una tecnica como la aplicada en este link
    (ASP.NET)Sending mail using SMTP in HTML format using IP settings in web.config file

    seria armar el html como lo hace en la propiedad mailMsg.Body

    es mas igual no te aconsejo que lo armes alli mismo, por ahi define el template del html y luego reemplaces en cada lugar por el dato


    no has especificado lenguaje que utilzias por eso pongo el codigo en c#, en todo caso se puede traducir


    string htmltemplate = @"<html>
                                <body>
                                    <table>
                                        <tr>
                                            <td>Nombre Cliente:</td>
                                            <td>{0}</td>
                                        </tr>
                                        <tr>
                                            <td>Direccion:</td>
                                            <td>{1}</td>
                                        </tr>
                                    </table>
                                </body>
                            </html>";
                           
    string mensaje = htmltemplate.Replace("{0}", txtNombreCliente.Text);                   
    mensaje = mensaje.Replace("{1}", txtDireccion.Text);

    mailMsg.Body = mensaje;


    de esta fotrma veras es mas simple de armar el template e ir reemplazando donde correspondapor el valor de del control en el formulario

    - por supuesto para la grilla la unica que queda es que recorras cada row y en cada iteracion armes el html con los datos

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    En el momento lo estoy haciendo como indicas, pero lo que realmente quisiera saber si es posible tomar el código HTML de alguna página o algún contenedor y enviarlo tal cual por e-mail.

    Gracias.
    domingo, 20 de diciembre de 2009 23:40
  • hola

    lo que podrias hacer es embeber un archico html como recurso de tu assembly para luego leerlo desde codigo

    para ello agrega el archivo html al proyecto en el VS, y luego si analzias la propeidades imagen
    veras que hay una que dice Build Action, bien cambiala a "Embedded Resource"

    de esta forma el archivo pasara a formar parte del assembly


    podrias usar alguna de estas tecnicas para leerlo

    Using Resources in Visual Studio .NET
    Understanding Embedded Resources in Visual Studio .NET

    Save and load image from resource file

    ResourceManager

    Embedding and Using Resources in C#

    Code: Retrieving an Image that is an Embedded Resource (Visual C#)


    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 21 de diciembre de 2009 0:01