Asp. Net Core 3.1 EmailSender не работает на стороне сервера после развертывания - PullRequest
0 голосов
/ 18 июня 2020

Я использую Asp. Net Core 3.1, и я использую интерфейс IEmailSender по умолчанию, предоставленный Microsoft, отправьте электронное письмо, к сожалению, он не работает на стороне сервера после развертывания

В моем коде я пытался отправить электронное письмо через локальный компьютер , и он отлично работает и отправляет электронное письмо , затем я развернул систему , но когда мне нужно отправить электронную почту через приложение, размещенное на сервере , отправка электронной почты не работает , я имею в виду, что код работает и обновляет информацию , но электронное письмо не приходит .

Это образец EmailSender class , который наследуется от IEmailSender interface :

public EmailSender(string host, int port, bool enableSSL, string userName, string password)
    {
        this.host = host;
        this.port = port;
        this.enableSSL = enableSSL;
        this.userName = userName;
        this.password = password;
    }

    public Task SendEmailAsync(string email, string subject, string htmlMessage)
    {
        var client = new SmtpClient(host, port)
        {
            Credentials = new NetworkCredential(userName, password),
            EnableSsl = enableSSL
        };

        // To avoid any error come from domain email server
        ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };

        client.SendMailAsync(
                new MailMessage(userName, email, subject, htmlMessage) { IsBodyHtml = true, Priority = MailPriority.High }
            );

        //client.Send(
        //    new MailMessage(userName, email, subject, htmlMessage) { IsBodyHtml = true }
        //    );
        return Task.CompletedTask;
    }

Как я могу разрешить отправку электронной почты через сервер, зная, что я проверил безопасность в тесте на стороне сервера, отправив электронную почту через te lnet и он работает нормально.

1 Ответ

1 голос
/ 24 июня 2020

Согласно Microsoft "System. Net .Mail" пространство имен устарело , и они упомянули, что вы можете использовать библиотеку «MailKit» вместо .

Вы можете узнать больше по этой ссылке: https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netcore-3.1

После обновления EmailSender до «MailKit» , отправка электронной почты работает нормально и к тому же более надежный по тем временам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...