Как отправить электронное письмо с помощью С# через Gmail

Я получаю сообщение об ошибке при попытке отправить электронное письмо через веб-службу. Я попытался разрешить доступ к менее безопасным приложениям, отключив двухэтапную аутентификацию и войдя в учетную запись через веб-браузер. Ни одно из решений для SO не сработало для меня. Я все еще получаю:

Ошибка: System.Net.Mail.SmtpException: для SMTP-сервера требуется безопасное соединение или клиент не был аутентифицирован. Сервер ответ был: 5.5.1 Требуется аутентификация.

Что я могу сделать, чтобы исправить эту проблему?

namespace EmailService
{
    public class Service1 : IService1
    {    
        public string SendEmail(string inputEmail, string subject, string body)
        {
            string returnString = "";
            try
            {
                MailMessage email = new MailMessage();
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";

                // set up the Gmail server
                smtp.EnableSsl = true;
                smtp.Port = 587;
                smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "mypassword");
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.UseDefaultCredentials = false;

                // draft the email
                MailAddress fromAddress = new MailAddress("[email protected]");
                email.From = fromAddress;
                email.To.Add(inputEmail);
                email.Subject = body;
                email.Body = body;

                smtp.Send(email);

                returnString = "Success! Please check your e-mail.";
            }
            catch(Exception ex)
            {
                returnString = "Error: " + ex.ToString();
            }
            return returnString;
        }
    }
}

Ответ 1

Просто перейдите сюда: Менее безопасные приложения. Войдите в систему, используя свою электронную почту и пароль, которые используются для отправки почты в вашем коде С#, и выберите Turn On.

Также перейдите по этой ссылке и нажмите Продолжить Разрешить доступ к вашей учетной записи Google

Также я немного его отредактировал:

public string sendit(string ReciverMail)
{
    MailMessage msg = new MailMessage();

    msg.From = new MailAddress("[email protected]");
    msg.To.Add(ReciverMail);
    msg.Subject = "Hello world! " + DateTime.Now.ToString();
    msg.Body = "hi to you ... :)";
    SmtpClient client = new SmtpClient();
    client.UseDefaultCredentials = true;
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.EnableSsl = true;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.Credentials = new NetworkCredential("[email protected]", "YourPassword");
    client.Timeout = 20000;
    try
    {
       client.Send(msg);
        return "Mail has been successfully sent!";
    }
    catch (Exception ex)
    {
        return "Fail Has error" + ex.Message;
    }
    finally
    {
       msg.Dispose();
    }
}

Если приведенный выше код не работает, попробуйте изменить его, как следующий код:

    SmtpClient client = new SmtpClient();
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.EnableSsl = true;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;
    client.Credentials = new NetworkCredential("[email protected]", "YourPassword");