2
respostas

MailKit.Security.SslHandshakeException: 'An error occurred while attempting to establish an SSL or TLS connection.

O meu código esta dando esse erro:

MailKit.Security.SslHandshakeException: 'An error occurred while attempting to establish an SSL or TLS connection.

The server's SSL certificate could not be validated for the following reasons: • The server certificate has the following errors: • A função de revogação não pôde verificar a revogação do certificado.

`using MailKit.Net.Smtp; using MimeKit; using System.Security.Authentication; using UsuariosApi.Models;

namespace UsuariosApi.Services { public class EmailService { private IConfiguration _config;

    public EmailService(IConfiguration config)
    {
        _config = config;
    }
    public void EnviarEmail(IEnumerable<string> destinatario, string assunto, int usuarioId, string code)
    {
        Mensagem mensagem = new Mensagem(destinatario, assunto, usuarioId, code);
        MimeMessage mensagemDeEmail = CriaCorpoDoEmail(mensagem);
        EnviarEmail(mensagemDeEmail);
    }

    private void EnviarEmail(MimeMessage mensagemDeEmail)
    {
        using(SmtpClient client = new SmtpClient())
        {
            try
            {
                client.SslProtocols |= SslProtocols.Tls;
                client.Connect(_config.GetValue<string>("EmailSettings:SmtpServer"),
                    _config.GetValue<int>("EmailSettings:Port"), true);

                client.AuthenticationMechanisms.Remove("XOUATH2");

                client.Authenticate(_config.GetValue<string>("EmailSettings:From"),
                    _config.GetValue<string>("EmailSettings:Password"));

                client.Send(mensagemDeEmail);
            }
            catch
            {
                throw;
            }
            finally
            {
                client.Disconnect(true);
                client.Dispose();
            }
        }
    }

    private MimeMessage CriaCorpoDoEmail(Mensagem mensagem)
    {
        MimeMessage mensagemDeEmail = new MimeMessage();
        mensagemDeEmail.From.Add(new MailboxAddress("UTF-8", _config.GetValue<string>("EmailSettings:From")));
        mensagemDeEmail.To.AddRange(mensagem.Destinatario);
        mensagemDeEmail.Subject = mensagem.Assunto;
        mensagemDeEmail.Body = new TextPart(MimeKit.Text.TextFormat.Text)
        {
            Text = mensagem.Conteudo
        };

        return mensagemDeEmail;
    }
}

} ` '

2 respostas

Eu tive esse mesmo erro. Fiz uma alteração no client.connect substituindo o true e por MailKit.Security.SecureSocketOptions.StartTlsWhenAvailable , ficou assim:

client.Connect(_configuration.GetValue<string>("EmailSettings:SmtpServer"),
          _configuration.GetValue<int>("EmailSettings:Port"),
          MailKit.Security.SecureSocketOptions.StartTlsWhenAvailable);

Walter, eu fiz esse ajuste que comentou e passei a ter outro erro

Using Mailkit : "The SMTP server has unexpectedly disconnected."

Pesquisando mais aqui descobri que quando tem o TLS disponível vc precisa usar a porta 587 Alterei e funcionou perfeitamente.

*Gmail SMTP Port: * 465 (SSL required) 587 (TLS required)