none
Como mandar un correo electronico al hacer on click en un botón en asp.

    Question

  • Hola a tod@s, tengo una duda a ver si alguien me puede ayudar. Me interesaría que el evento on-click de un botón en asp me enviara a una dirección de correo un email con un mensaje. La dirección siempre sería la misma y el mensaje también.

    Gracias,

    Saludos.
    Wednesday, September 09, 2009 3:48 PM

Answers

  • Hola quifransa,

    pues para ello debes utilizar la clase SmtpClient y las clases MailMessage y MailAddress. Te pongo un ejemplo:

    protected void Button1_Click(object sender, EventArgs e)
            {
                //Indicas las opciones del servidor smtp mediante el que enviarás el correo (smtp + puerto)
                SmtpClient client = new SmtpClient("smtp.gmail.com", 557);
    
                MailMessage message=new MailMessage("email.From@servidor.com","email.Destino@servidor.com","Subject","el mensaje que vas a enviar");
    
                //De forma alternativa, y por si quieres enviar html, puedes especificar el mensaje asi
                message.Body = "El mensaje lo pones aqui";
    
                //Si tu servidor smtp necesita credenciales , las pones asi
    
                client.EnableSsl = true;
                client.Credentials = new NetworkCredential("username", "password");
    
                //Finalmente envias el mensaje
                client.Send(message);
            }
    Para más infor y otros ejemplos te dejo este link:

    http://msdn.microsoft.com/es-es/library/system.net.mail.smtpclient.aspx


    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marked as answer by quifransa Thursday, September 10, 2009 7:27 AM
    Wednesday, September 09, 2009 5:55 PM
  • Ampliando un poco la información de Javier, también puedes utilizar javascript "mailTo"


    "javascrip:mailto:webmaster@google.com?subject=Titulo&body=<html><font size=+4 color=red>Cuerpo con Formato</font><html>"
    Saludos.


    Si la respuesta ha sido de utilidad marca la como respuesta correcta.

    Marc Rubiño
    Web: http://lonetcamp.com
    Blog: http://geeks.ms/blogs/mrubino

    • Marked as answer by quifransa Thursday, September 10, 2009 7:27 AM
    Thursday, September 10, 2009 7:12 AM
    Moderator
  • Hola quifransa,

    Pensa que has de tenir instalada una aplicació per enviar emails. Aquest codi el que fa és obrir l'aplicació de gestió d'emails per defecte (l'Outlook, el Notes, Windows Live mail, o aquell que tinguis instal·lat i facis servir...) i crear un mail que l'usuari pot enviar a l'adreça indicada.

    Fes una prova. Treu l'event OnClick del botó, però deixa l'event OnClientClick. Si aixó funciona vol dir que está executant primer el codi del servidor.


    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marked as answer by quifransa Monday, September 14, 2009 8:22 AM
    Thursday, September 10, 2009 12:14 PM

All replies

  • Hola quifransa,

    pues para ello debes utilizar la clase SmtpClient y las clases MailMessage y MailAddress. Te pongo un ejemplo:

    protected void Button1_Click(object sender, EventArgs e)
            {
                //Indicas las opciones del servidor smtp mediante el que enviarás el correo (smtp + puerto)
                SmtpClient client = new SmtpClient("smtp.gmail.com", 557);
    
                MailMessage message=new MailMessage("email.From@servidor.com","email.Destino@servidor.com","Subject","el mensaje que vas a enviar");
    
                //De forma alternativa, y por si quieres enviar html, puedes especificar el mensaje asi
                message.Body = "El mensaje lo pones aqui";
    
                //Si tu servidor smtp necesita credenciales , las pones asi
    
                client.EnableSsl = true;
                client.Credentials = new NetworkCredential("username", "password");
    
                //Finalmente envias el mensaje
                client.Send(message);
            }
    Para más infor y otros ejemplos te dejo este link:

    http://msdn.microsoft.com/es-es/library/system.net.mail.smtpclient.aspx


    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marked as answer by quifransa Thursday, September 10, 2009 7:27 AM
    Wednesday, September 09, 2009 5:55 PM
  • Ampliando un poco la información de Javier, también puedes utilizar javascript "mailTo"


    "javascrip:mailto:webmaster@google.com?subject=Titulo&body=<html><font size=+4 color=red>Cuerpo con Formato</font><html>"
    Saludos.


    Si la respuesta ha sido de utilidad marca la como respuesta correcta.

    Marc Rubiño
    Web: http://lonetcamp.com
    Blog: http://geeks.ms/blogs/mrubino

    • Marked as answer by quifransa Thursday, September 10, 2009 7:27 AM
    Thursday, September 10, 2009 7:12 AM
    Moderator
  • Muchas gracias a los dos, voy a probar!!!

    Saludos.

    Thursday, September 10, 2009 7:27 AM
  • Hola Javier, el método que has descrito supongo que es cuando tu enviar un correo a alguien desde tu sistema. Lo que quería conserguir yo era que via web el cliente pueda enviar un correo a nuestro sistema(a nuestra empresa). ¿en este caso, no serviría esto no?

    gracias.
    Thursday, September 10, 2009 8:20 AM
  • Hola Marc, lo que veo es que el código javascript no lo puedo poder en el evento onclick del boton asp. ¿cómo hago para que se dispare este código javascript desde el onclick del botón?

    gracias.
    Thursday, September 10, 2009 8:35 AM
  • Hola quifransa,

    entonces la opción que te da mark es la correcta. Puedes meter el código javascript en una función y llamarlo en el onclik del botón, tal que así:

    <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication2._Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
        <script type="text/javascript">
            function OpenMail() {
                location.href = "mailto:webmaster@google.com?subject=Encuentro bonita tu pagina&body=<html><font size=+4 color=red>Pero que muy bonita</font><html>";
                return false;
            }
    </script>
    
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="OpenMail()" />
        </div>
        </form>
    </body>
    </html>


    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    Thursday, September 10, 2009 8:57 AM
  • BUah yo pongo esto y no me funciona:

    <%

    @ Page Language="VB" ContentType="text/html" ResponseEncoding="utf-8" AutoEventWireup="false"%>

    <

     

    script language="javascript" type="text/javascript">

     

    function OpenMail(){

    location.href =

    "mailto:ventas@quifransa.com?subject=Nova Comanda Web&body=<html><font size=+4 color=red>AVIS: MIRAR AL NAVISION LA NOVA COMANDA</font><html>";

     

    return false;

    }

    </

     

    script>

    <

     

    asp:Button ID="actualitzarComanda" runat="server" OnClick="actualitzarComanda_Click"

     

    Text="Enviar Comanda" Font-Names="Calibri" ForeColor="DarkBlue" style="left: 117px; position: absolute; top: 661px" Font-Bold="True" UseSubmitBehavior="False" Height = "25px" Width = "112px" OnClientClick="OpenMail()"/>

    ¿Puede ser que me falte en el page Language el codebehind y el inherits o no tiene porque no funcionar sin esto?

    Thursday, September 10, 2009 11:47 AM
  • Hola quifransa,

    Pensa que has de tenir instalada una aplicació per enviar emails. Aquest codi el que fa és obrir l'aplicació de gestió d'emails per defecte (l'Outlook, el Notes, Windows Live mail, o aquell que tinguis instal·lat i facis servir...) i crear un mail que l'usuari pot enviar a l'adreça indicada.

    Fes una prova. Treu l'event OnClick del botó, però deixa l'event OnClientClick. Si aixó funciona vol dir que está executant primer el codi del servidor.


    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marked as answer by quifransa Monday, September 14, 2009 8:22 AM
    Thursday, September 10, 2009 12:14 PM
  • Buenos Dias Javier, he hecho lo que me has comentado. He quitado el evento OnClick del botón y he dejado sólo el Onclientclick. Me ha funcionado bien, pero lo que veo es que me abre el outlock y entonces le tengo que dar al enviar. ¿no se podría enviar directamente sin que abra el outlock?

    gracias.
    Monday, September 14, 2009 8:24 AM
  • Hola de nuevo,

    pues, a no ser que algún compañero me corrija, creo que ese es el funcionamiento normal del método mailto. He estado buscando y no veo opción de configurarlo para que envie el mail directamente. Para enviarlo directamente podrías utilizar la opcón del SmtpClient y el MailMessage. A fin de cuentas, es un código que se ejecutará desde el servidor, no desde el cliente.


    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    Monday, September 14, 2009 9:13 PM