【问题标题】:What could be reasons that Microsoft retired SmtpClient? [closed]Microsoft 停用 SmtpClient 的原因可能是什么? [关闭]
【发布时间】:2018-06-04 15:05:18
【问题描述】:

在 .NET Framework 4.7 文档中,Microsoft marked SmtpClient obsolete 原因如下:

SmtpClient 及其网络类型设计不佳,我们强烈 建议您使用https://github.com/jstedfast/MailKit 和 改为https://github.com/jstedfast/MimeKit

我很好奇,不是这方面的专家。 MS不得不推荐外部图书馆的这种“设计不佳”可能是什么?对于仍在使用它的项目来说有多糟糕?

【问题讨论】:

  • 我投票结束这个问题,因为we're not customer support for (your favorite company).
  • 对不起,我不同意。这个问题更多的是我想知道的“技术设计”,而不是想问微软的原因。了解 Microsoft 团队搞砸了什么是改进自己的好方法,这样以后如果您碰巧遇到相同的设计,您就不会这样做。
  • API 没有过时! MS Docs 是从代码生成的,并且这个 api 在 Xamarin/Mono 中被标记为 Obsolete。 MS 仍在尝试修复一个错误,请参阅此讨论 stackoverflow.com/questions/43517434/…
  • 今天又查了.NET Core 3.1,虽然还没有过时,但官方还是建议不要用。

标签: .net networking smtp smtpclient


【解决方案1】:

SmtpClient 不支持 DKIM(或 SPF)身份验证。它不会自然发送RSA 密钥,并且一些邮件提供商将小于 1024 位的密钥视为垃圾邮件,例如 gmailorange

检查“我从我的域发送的邮件未经身份验证”段落here

我最近也更改了我的实现,我建议MailKit:代码定义几乎相同(允许您保留一个MailMessage 对象),而且效果很好!

using (var client = new MailKit.Net.Smtp.SmtpClient())
{
      client.Connect(Host, Port, UseSsl);
      client.Authenticate(Credential.UserName, Credential.Password);
      client.Send(MimeMessage.CreateFromMailMessage(new MailMessage()));
      client.Disconnect(true);
}

【讨论】:

  • MS 不修补其实现而是引用外部包的任何原因?
  • 我不知道,可能没有足够的时间来实施 DKIM 或计划到未来的版本(?)
  • 在我读到 MS 推荐 MailKit 之前,我的 SmtpClient 工作正常。尝试使用 .Net 5,但无法直接连接。这应该只是工作。使用 (var client = new SmtpClient()) client.Connect(_SMTP, _PORT, false);我要回到 SmtpClient。
  • @GregoryBologna,MailKit 工作正常,我认为您有引用冲突,您尝试过 MailKit.Net.Smtp.SmtpClient 吗?
  • 它在 SSL 上失败,但我将其设置为 false。我在 .NET 5 上,这里可能有问题吗?这是我的测试代码。 var message = new MimeMessage(); message.From.Add(new MailboxAddress("'Test' ", "no-reply@example.com")); message.To.Add(new MailboxAddress("Greg B", "gregb@example.com")); message.Subject = "测试"; message.Body = new TextPart("plain"){Text = @"mail message test"};使用 (var client = new SmtpClient()){ client.Connect(_SMTP, _PORT, false);客户端.发送(消息); client.Disconnect(true);}
猜你喜欢
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 2013-02-16
  • 2021-09-01
  • 2012-01-01
  • 2020-09-09
相关资源
最近更新 更多