Cómo enviar el email de un formulario de contacto mediante ASP.NET y C#

Los formularios de contacto son la mar de útiles en cualquier desarrollo web para que el visitante que así lo requiera, pueda ponerse en contacto con nosotros, los administradores. Logicamente, y en términos de desarrollo, cuentan con dos partes bien diferenciadas. Por un lado está la parte del cliente, que siendo un desarrollo web, estará implementada en HTML y será ejecutada para el navegador del usuario. Por otro lado tenemos la parte del lado del servidor, que se encargará de ejecutar los distintos procesos, como el del envío del email, y que será ejecutada por el servidor.

Habiendo dicho esto, vamos a ver cómo enviar el email de un formulario de contacto mediante ASP.NET y C#.

El código de abajo es el HTML necesario para montar nuestro formulario de contacto:

<%this is the client side code for the design and display%>
<asp:Panel ID="Panel1" runat="server" DefaultButton="btnSubmit">
    <p>
        Please Fill the Following to Send Mail.</p>
    <p>
        Your name:
        <asp:RequiredFieldValidator ID="RequiredFieldValidator11" runat="server" ErrorMessage="*"

            ControlToValidate="YourName" ValidationGroup="save" /><br />
        <asp:TextBox ID="YourName" runat="server" Width="250px" /><br />
        Your email address:
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*"

            ControlToValidate="YourEmail" ValidationGroup="save" /><br />
        <asp:TextBox ID="YourEmail" runat="server" Width="250px" />
        <asp:RegularExpressionValidator runat="server" ID="RegularExpressionValidator23"

            SetFocusOnError="true" Text="Example: [email protected]" ControlToValidate="YourEmail"

            ValidationExpression="w+([-+.']w+)[email protected]+([-.]w+)*.w+([-.]w+)*" Display="Dynamic"

            ValidationGroup="save" /><br />
        Subject:
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*"

            ControlToValidate="YourSubject" ValidationGroup="save" /><br />
        <asp:TextBox ID="YourSubject" runat="server" Width="400px" /><br />
        Your Question:
        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="*"

            ControlToValidate="Comments" ValidationGroup="save" /><br />
        <asp:TextBox ID="Comments" runat="server" 

                TextMode="MultiLine" Rows="10" Width="400px" />
    </p>
    <p>
        <asp:Button ID="btnSubmit" runat="server" Text="Send" 

                    OnClick="Button1_Click" ValidationGroup="save" />
    </p>
</asp:Panel>
<p>
    <asp:Label ID="DisplayMessage" runat="server" Visible="false" />
</p>  

Este sería el código del lado del servidor:

protected void SendMail()
{
    // Gmail Address from where you send the mail
    var fromAddress = "[email protected]";
    // any address where the email will be sending
    var toAddress = YourEmail.Text.ToString(); 
    //Password of your gmail address
    const string fromPassword = "Password";
     // Passing the values and make a email formate to display
    string subject = YourSubject.Text.ToString();
    string body = "From: " + YourName.Text + "n";
    body += "Email: " + YourEmail.Text + "n";
    body += "Subject: " + YourSubject.Text + "n";
    body += "Question: n" + Comments.Text + "n";
    // smtp settings
    var smtp = new System.Net.Mail.SmtpClient();
    {
        smtp.Host = "smtp.gmail.com";
        smtp.Port = 587;
        smtp.EnableSsl = true;
        smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
        smtp.Timeout = 20000;
    }
    // Passing values to smtp object
    smtp.Send(fromAddress, toAddress, subject, body);
}

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        //here on button click what will done 
        SendMail();
        DisplayMessage.Text = "Your Comments after sending the mail";
        DisplayMessage.Visible = true;
        YourSubject.Text = "";
        YourEmail.Text = "";
        YourName.Text = "";
        Comments.Text = "";
    }
    catch (Exception) { }
}

Este código funciona en la versión 3.5 del framework y en la versión 4.0.

Fuente: Muhammad Kashif Saeed

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP