.Net Core(截至目前)缺少System.Net.Mail
命名空间,并且该命名空间的预览版本通过nugget可用,缺少SmtpClient
,它是最重要的类型。但是,如果由于某些原因(例如成为独立的英雄)不喜欢使用类库,有没有办法使用.Net Core中的可用工具发送电子邮件(HttpWebRequest,HttpClient,Sockets等) ?如果是这样,怎么办呢(示例而非理论)。
答案 0 :(得分:0)
您绝对可以编写自己的库来发送电子邮件。问题是“你应该吗?”除非您完全打算将图书馆提供给广大受众,否则所需的时间不会是值得的。
原始SMTP Specification (RFC 821)
(https://tools.ietf.org/html/rfc821)约为68页。实现此规范是“可行的”,但需要付出巨大努力。较新的SMTP Specification (RFC2821)
(https://tools.ietf.org/html/rfc2821)是79页。
除了实现RFC 2821中指定的功能之外,您还需要熟悉许多其他RFC和文档。 (简要介绍第68至70页列出的参考资料肯定会让你暂停一下。)
使用.NET Core
发送邮件的任何人的最佳选择是使用SendGrid(http://sendgrid.com/)等服务或MailKit(https://github.com/jstedfast/MailKit)等免费开源库。我相信大多数.NET Core
部署的网站都使用这两种方法中的一种来发送电子邮件。
Steve Gordon在使用带有ASP.NET Core的MailKit库时做了一篇非常好的博文(https://www.stevejgordon.co.uk/how-to-send-emails-in-asp-net-core-1-0)。
即使您想构建自己的SMTP librar
y(并且我绝对不提倡这样做),最好的方法可能是通过{来MailKit
(https://github.com/jstedfast/MailKit)之类的东西。 {1}}然后修改它。这至少可以让你玩并迭代修改工作实现。
您的大多数工作都是使用GitHub
命名空间中的组件完成的。以下是System.Net.Sockets
版本(https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets?view=netframework-4.7)的参考。它应该与.NET Framework 4.7
实现非常相似,尽管我还没有测试过它。
有时最好的建议是“仅仅因为你不能意味着你应该这样做”。请不要成为“独立英雄”。去做有用的。