Carlos Jimenez Bermudez
Carlos Jimenez Bermudez

Reputation: 1175

Asp.Net Core MailKit: The remote certificate is invalid according to the validation proceedure

I have a question regarding email sending on asp.net core.

So I have this code:

private void SendEmailLocalSMTP(string email, string subject, string message)
{
        MimeMessage mailMsg = new MimeMessage();

        //TESTING ENVIRONMENT ONLY!!!
        mailMsg.To.Add(new MailboxAddress("[email protected]", "[email protected]"));

        // From
        mailMsg.From.Add(new MailboxAddress("[email protected]", "Facturacion"));

        // Subject and multipart/alternative Body
        mailMsg.Subject = subject;
        string html = message;

        System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("[email protected]", "myPassword");

        // Init SmtpClient and send
        using (var client = new SmtpClient())
        {
            client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);
            client.AuthenticationMechanisms.Remove("XOAUTH2");
            client.Authenticate(credentials);
            client.Send(mailMsg);
            client.Disconnect(true);
        }
    }

From what I have found in other posts somewhat related, this should be enough to send it using MailKit, however it's not working properly. I am getting the following exception and I don't know how to proceed from here.

This is the exception:

enter image description here

I've seen this question, but I haven't made much sense from it: How to send email by using MailKit?

Any help is highly appreciated, thanks.

Upvotes: 8

Views: 11318

Answers (1)

jstedfast
jstedfast

Reputation: 38548

The problem you are hitting is that your system does not trust the GMail SSL certificate.

Most likely the reason for this is because the Google Root CA certificate has not been imported into your Root certificate store.

There are two ways around this:

  1. Import Google's Root CA certificate into your system (how to do this varies depending on Windows, Linux, MacOS)
  2. Override the certificate validation by setting your own certificate validation callback method on client.ServerCertificateValidationCallback

For more information, see the FAQ: https://github.com/jstedfast/MailKit/blob/master/FAQ.md#InvalidSslCertificate

Upvotes: 11

Related Questions