部署后,Asp.Net Core 3.1 EmailSender在服务器端不起作用

时间:2020-06-18 11:05:42

标签: c# asp.net-core-3.1

我正在使用Asp.Net Core 3.1,并且正在使用默认的 IEmailSender 微软提供的界面发送电子邮件,不幸的是 部署后无法在服务器端工作

在我的代码中,我试图通过本地主机发送电子邮件,并且它正在正常工作并发送电子邮件,然后我部署了系统 >,但是,当我需要通过服务器上托管的应用程序发送电子邮件时,发送电子邮件不起作用,我的意思是代码正在起作用并更新了信息,但电子邮件未到达

这是从 IEmailSender 界面继承的 EmailSender 的示例:

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;
    }

知道我在通过telnet发送电子邮件的服务器端测试中检查了安全性并且工作正常后,如何允许通过服务器发送电子邮件。

1 个答案:

答案 0 :(得分:1)

根据Microsoft的“ System.Net.Mail” 名称空间已过时,他们提到您可以使用“ MailKit”库

您可以从以下链接中了解更多信息:https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netcore-3.1

将EmailSender更新为“ MailKit” 后,发送电子邮件可以正常工作 而且实际上更可靠。