SMTP-ретранслятор SparkPost с StartTLS неожиданно выдает ошибку "Ошибка аутентификации, поскольку удаленная сторона закрыла транспортный поток".

У меня есть (долго) работающее веб-приложение, написанное на VB на платформе ASP.NET 4.0.

Мы использовали SparkPost для отправки сообщений электронной почты некоторое время, но через несколько дней (не уверен насчет точной даты), функция электронной почты перестала работать и начала выдавать следующее сообщение об ошибке

Ошибка аутентификации, потому что удаленная сторона закрыла транспортный поток.

Мы используем MailKit версии 1.22 (последняя поддерживает ASP.NET 4.0), чтобы установить соединение и отправлять электронные письма следующим образом:

Using objMessage As New MailMessage(from, to, title, message)
    objMessage.IsBodyHtml = True
        'https://github.com/jstedfast/MailKit
        Using client As New MailKit.Net.Smtp.SmtpClient()
            ''accept all SSL certificates (in case the server supports STARTTLS)
            client.ServerCertificateValidationCallback = Function(sender, certificate, chain, errors)
                                                             Return True
                                                         End Function

            ''Note: since we don't have an OAuth2 token, disable the XOAUTH2 authentication mechanism.
            client.AuthenticationMechanisms.Remove("XOAUTH2")

            client.AuthenticationMechanisms.Add("AUTH LOGIN")

            client.Connect("smtp.sparkpostmail.com", 587, SecureSocketOptions.StartTls)

            ''Note: only needed if the SMTP server requires authentication
            client.Authenticate("SMTP_Injection", "**********************")//the asterixes are the API key

            client.Send(objMessage)
            client.Disconnect(True)
        End Using

    End Using

эта настройка с StartTLS - то, что документация SparkPost хочет, чтобы я использовал.

Я читал, что SparkPost недавно прекратил поддержку TSL 1.0. Может ли это быть виновником?

1 ответ

Решение

.NET Framework 4.0 использует SSL3.0 или TLS1.0 в качестве протокола по умолчанию. Самый простой способ решить эту проблему - обновить существующее приложение до.NET Framework 4.6.2. После обновления ваше приложение будет использовать протокол TLS1.2 по умолчанию. Вы можете прочитать больше об этом здесь

Другие вопросы по тегам