使用MailKitAddressString构造函数发送带有mailKit的电子邮件过时警告

问题描述

我有以下代码可以很好地发送电子邮件,但是我收到这些警告,要求我将某些方法标记为“过时”。我查看了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 (将#修改为@)