问题描述
我有以下代码可以很好地发送电子邮件,但是我收到这些警告,要求我将某些方法标记为“过时”。我查看了mailKit网站上的文档,并说我应该使用与MailboxAddress(String)
不同的构造函数。我明白了,但是在如何实现他们所要求的方式时遇到了麻烦,这似乎很简单,但我认为我缺少一步。这是推荐MailboxAddress(String,String)
new way of doing it的方法之一。
代码如下:
控制器
public IActionResult RequestPassword()
{
var message = new Message(new string[]
{
"[email protected]"
},"Test Email","This is the content from out email."
);
_emailSender.SendEmail(message);
return View();
}
Message.cs
对于此类,警告会弹出To.AddRange(to.Select(x => new MailboxAddress(x)));
行
public class Message
{
public List<MailboxAddress> To { get; set; }
public string Subject { get; set; }
public string Content { get; set; }
public Message(IEnumerable<string> to,string subject,string content)
{
To = new List<MailboxAddress>();
To.AddRange(to.Select(x => new MailboxAddress(x)));
Subject = subject;
Content = content;
}
}
EmailSender类
对于此类,警告会弹出 emailMessage.From.Add(new MailboxAddress(_emailConfig.From));
public class EmailSender : IEmailSender
{
private readonly EmailConfiguration _emailConfig;
public EmailSender(EmailConfiguration emailConfig)
{
_emailConfig = emailConfig;
}
// This creates the Email and then sends it.
public void SendEmail(Message message)
{
var emailMessage = CreateEmailMessage(message);
Send(emailMessage);
}
// Creates Email Message
private MimeMessage CreateEmailMessage(Message message)
{
var emailMessage = new MimeMessage();
emailMessage.From.Add(new MailboxAddress(_emailConfig.From));
emailMessage.To.AddRange(message.To);
emailMessage.Subject = message.Subject;
emailMessage.Body = new TextPart(MimeKit.Text.TextFormat.Text)
{
Text = message.Content
};
return emailMessage;
}
// Sends the email
private void Send(MimeMessage mailMessage)
{
using var client = new SmtpClient();
try
{
client.Connect(_emailConfig.MailServer,_emailConfig.MailPort,false);
client.Authenticate(_emailConfig.Username,_emailConfig.Password);
client.Send(mailMessage);
}
catch (Exception)
{
throw;
}
finally
{
client.Disconnect(true);
client.Dispose();
}
}
}
接口
public interface IEmailSender
{
void SendEmail(Message message);
}
如果您也想要StartUp.cs,请告诉我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)