使用ASP.Net vNext发送邮件

在传统的ASP.Net和.Net中,发送邮件是通过驻留在System.dll System.Net.Mail类完成的。 现在使用KRE,vNext似乎没有将System.Net.Mail作为单独的包。

引用project.json"net453"框架

 "frameworks": { "aspnet50": { }, "aspnetcore50": { }, "net453": {} // <<< throws compilation errors }, 

因为以下错误导致所有地狱崩溃:

.NET Framework 4.5.3错误CS0234:名称空间“Microsoft”中不存在类型或命名空间名称“AspNet”(您是否缺少程序集引用?)

它实际上抱怨作为kpm包的一部分的所有vNext依赖项。

那么,有没有人想出一种使用ASP.Net vNext发送邮件的方法呢?

注意

即使System出现在References下,即使Intellisense显示System.Net.Mail可供使用,代码也无法编译。 例如,这样的简单陈述虽然看似有效,

 using System.Net.Mail; var m = new MailMessage(); 

将抛出编译错误,例如:

ASP.NET Core 5.0错误CS0234:名称空间“System”中不存在类型或命名空间名称“Net”(您是否缺少程序集引用?)

ASP.NET Core 5.0错误CS0246:找不到类型或命名空间名称“MailMessage”(您是否缺少using指令或程序集引用?)

更新

使用最新的Visual Studio 2015 CTP 5,他们似乎修复了智能感知故障。 现在, System.Net不再具有Mail命名空间。 在旁注中,我使用VS 2015预览创建的vNext项目不再有效 – 我在主页上收到403.3错误! 啊,使用测试版软件的喜悦!

要使用System.Net.Mail您的应用只能定位到aspnet50aspnetcore50目标没有这样的支持(据我所知,至少目前还没有)。

您不应该让您的应用程序目标net453 (正如Luca在评论中提到的那样,无论如何已经重命名)因为ASP.NET 5应用程序不能在该平台上运行。

针对aspnet50的应用程序通常可以引用任何.NET 4.0+ NuGet包或GAC引用。

因此,在您的情况下,删除net453aspnetcore50目标,并 aspnet50目标中添加对System.Net.Mail的框架引用。

一个完整的替代方案是找到一些其他现有的NuGet包,它支持在aspnet50aspnetcore50发送电子邮件,但我怀疑此时此类包存在(尽管毫无疑问将来会在某个时候)。

为了跟进… .NET团队已经声明移植System.Net.Mail将不那么简单,可能需要一段时间。 这是一个令人失望的事情,因为一个制作网站通常会发送更多的电子邮件。

与此同时,有人刚刚发布了一个名为MailKit的兼容Core-Clr的电子邮件API。 你可以在这里阅读它https://github.com/jstedfast/MailKit/issues/212