使用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
您的应用只能定位到aspnet50
。 aspnetcore50
目标没有这样的支持(据我所知,至少目前还没有)。
您不应该让您的应用程序目标net453
(正如Luca在评论中提到的那样,无论如何已经重命名)因为ASP.NET 5应用程序不能在该平台上运行。
针对aspnet50
的应用程序通常可以引用任何.NET 4.0+ NuGet包或GAC引用。
因此,在您的情况下,删除net453
和aspnetcore50
目标,并在 aspnet50
目标中添加对System.Net.Mail
的框架引用。
一个完整的替代方案是找到一些其他现有的NuGet包,它支持在aspnet50
和aspnetcore50
发送电子邮件,但我怀疑此时此类包存在(尽管毫无疑问将来会在某个时候)。
为了跟进… .NET团队已经声明移植System.Net.Mail将不那么简单,可能需要一段时间。 这是一个令人失望的事情,因为一个制作网站通常会发送更多的电子邮件。
与此同时,有人刚刚发布了一个名为MailKit的兼容Core-Clr的电子邮件API。 你可以在这里阅读它https://github.com/jstedfast/MailKit/issues/212