我正在使用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发送电子邮件的服务器端测试中检查了安全性并且工作正常后,如何允许通过服务器发送电子邮件。
答案 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” 后,发送电子邮件可以正常工作 而且实际上更可靠。