Saturday, 4 February 2023

Send an email through Gmail SMTP and discuss common errors


This article will teach us how to send emails through the .Net C# code. Common issue while sending an email.

Below is the code to send an email.

Host: smtp.gmail.com
Port: 587


 var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("senderemal@gmail.com", "password"),               
                EnableSsl = true
            };
  client.Send("senderfromemail@gmail.com", "to@gmail.com", "test", "testbody");


You will get the below error while running this code.

The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Authentication


Upto last year's user, you can enable Less secure app access from Google account settings and run the code. But, now Google no longer supports third-party apps on the devices. Google disables the Less secure app access option.





















To fix this issue, you need to create an app password from the google account settings. 


Step 1: 
Go to your Google Account.

Step 2: Select Security.
Step 3: Under "Signing in to Google," select App Passwords















If the select App password option is unavailable, this means you have not enabled 2-Step verification.

Step 4: Enable the 2-Step verification first.
Step 5: Click on the app password and generate your new password. Select the device and choose the device you’re using and then Generate.






 The App Password is the 16-character code in the yellow bar on your device.
Tap Done.

Step 6: Use your new password in the same code.

 var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("senderemal@gmail.com", "apppassword"),               
                EnableSsl = true
            };
  client.Send("passfromemail@gmail.com", "to@gmail.com", "Subject", "Email body");


You can find, your email is working

If you want to send an email with HTML Content the use below code.

      var body = "Email body here.<br/><br/> <a>Reset password</a>";
           
      var msg = new MailMessage();    
      msg.IsBodyHtml = true;
      msg.Body = body;
      msg.Subject = "Subject here";
      msg.From = new MailAddress("fromemail@gmail.com");
      msg.To.Add("toemail@gmail.com");

      client.Send(msg);


I hope you like the article.

1 comment:

Implement Authorization in Swagger with Static Value in Header .Net 8

If you want an anonymous user should not run the APIs. To run your API Endpoints From Swagger / Postman / Code the user should pass the head...