How to use gmail SMTP in ASP.NET form

32,515

Solution 1

protected void SendMail()
        {
            MailMessage msg = new MailMessage();
            System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
            try
            {
                msg.Subject = "Add Subject";
                msg.Body = "Add Email Body Part";
                msg.From = new MailAddress("Valid Email Address");
                msg.To.Add("Valid Email Address");
                msg.IsBodyHtml = true;
                client.Host = "smtp.gmail.com";
                System.Net.NetworkCredential basicauthenticationinfo = new System.Net.NetworkCredential("Valid Email Address", "Password");
                client.Port = int.Parse("587");
                client.EnableSsl = true;
                client.UseDefaultCredentials = false;
                client.Credentials = basicauthenticationinfo;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.Send(msg);
            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
            }
        }

Solution 2

You can add this in your web.config file

 <system.net>
    <mailSettings>
      <smtp from="[email protected] ">
        <network host="smtp.gmail.com" defaultCredentials="false"
      port="587" userName ="[email protected]" password="yourpassword" />
      </smtp>
    </mailSettings>
   </system.net>

Solution 3

Create a System.Net.Mail.SmtpClient object, set the SMTP server info you are using.

Then create a System.Smtl.MailMessage with the message data and send it:

using (System.Net.Mail.SmtpClient mail = new System.Net.Mail.SmtpClient()) {
    using (System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage("from*where.com", "[email protected]") {
        IsBodyHtml = true,
        Subject = "Subject text",
        Body = messageBody,
    }) {
        mail.Send(message);
} // using

You can configure your SmtpClient in the constructor, we use web.comfig, so I don't have that code.

Solution 4

Google now blocks sign-ins from an app (even over SSL) to send an email. You have two options:

  1. Enable less-secure apps for the account you are using; OR
  2. Generate an app-password from Google (recommended)

For option 2, you will have to enable 2-factor authentication before you can generate an app pasword. Here are the steps I took to get this working on my ASP.NET web app

How to configure an ASP.NET web app with Gmail SMTP

Share:
32,515
Aj Troxell
Author by

Aj Troxell

Updated on July 09, 2022

Comments

  • Aj Troxell
    Aj Troxell almost 2 years

    I am a ASP novice and am troubleshooting a form for work. None of us here are ASP experts as we use PHP. But I am on the bottom of PHP experience as well, mostly working with HTML/CSS alone. My current forms credentials look like:

    rotected Sub SubmitForm_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            If Not Page.IsValid Then Exit Sub
    
            Dim SendResultsTo As String = "email to"
            Dim smtpMailServer As String = "email server"
            Dim smtpUsername As String = "email username"
            Dim smtpPassword As String = "password"
            Dim MailSubject As String = "Form Results"
    

    How would I go about making this form send to a Gmail address? I know I must include the port (587) somewhere, but cannot figure out where, as this form doesn't match the syntax of any other forms I have seen. Any help would be greatly appreciated!