0

i'm writing a C# email application which is currently being designed for use with Gmail so I can test authentication. However I'm getting an error which doesn't seem to make much sense as I am setting SSL to true and using a user and password.

Error Message: System.Net.Mail.SmtpException: 'The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at'

using System;
using System.Net;
using System.Net.Mail;

namespace EmailSendingProgram
{
    public class EmailSendingClass
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Type your Gmail Address: ");
            string from = Console.ReadLine();

            Console.WriteLine("Type your Gmail Password: ");
            string password = Console.ReadLine();

            Console.WriteLine("Type the Email Address you wish to send to: ");
            string to = Console.ReadLine();

            Console.WriteLine("Type the Subject of the email: ");
            string subject = Console.ReadLine();

            Console.WriteLine("Type or paste in your email (either text or HTML): ");
            string body = Console.ReadLine();

            EmailSendingClass email = new EmailSendingClass();
            email.Send(from, password, to, subject, body);
        }

        /// handles sending the email
        /// hardcoded to work with gmail just change the CreateSmtpClient from 
        /// "smtp.gmail.com", 587 to whatever you want to use
        public void Send(string from, string password, string to, string subject, string body)
        { 
            var message = CreateMailMessage(from, to, subject, body);

            // Host and Port setup for use with Gmail
            using (SmtpClient client = CreateSmtpClient("smtp.gmail.com", 587, from, password))
            {
                client.Send(message);
            }
        }

        /// Defines the SmtpClient for the mail message 
        /// setups up the network credentials to send the email
        private SmtpClient CreateSmtpClient(string host, int port, string from, string password)
        {
            SmtpClient client = null;

            client = new SmtpClient()
            {
                Host = host,
                Port = port,
                EnableSsl = true,
                Credentials = new NetworkCredential(from, password)
            };

            return client;
        }

        /// defines what is contained in the email and where it will be sent
        /// also makes all messages send as HTML
        private MailMessage CreateMailMessage(string from, string to, string subject, string body)
        {
            MailMessage message = null;

            message = new MailMessage(from, to)
            {
                Subject = subject,
                Body = body
            };

            message.IsBodyHtml = true;
            return message;
        }
    }
}

I understand that something is being done incorrectly with the authentication but I can't seem to figure out what specifically. So any help would be appreciated.

Uwe Keim
  • 39,551
  • 56
  • 175
  • 291
Daniel Turcich
  • 1,764
  • 2
  • 26
  • 48

2 Answers2

0

I encountered a similar problem caused by TLS 1.2 support issues. If this is your case, the simplest solution might be to target .NET 4.6.1 or higher. Other suggestions can be found here and here.

M.A. Hanin
  • 8,044
  • 33
  • 51
0

The issue wasn't the program but rather was Gmail refusing sign in from "less secure apps"

I simply clicked the secure your account button and allowed this account to be signed in from less secure apps.

enter image description here

Daniel Turcich
  • 1,764
  • 2
  • 26
  • 48