在传统的ASP.Net和.Net中,发送邮件是通过驻留在System.Net.Mail
的{{1}}类完成的。现在使用KRE,vNext似乎没有System.dll
作为单独的包。
引用System.Net.Mail
"net453"
框架
project.json
导致所有地狱崩溃,例如:
.NET Framework 4.5.3错误CS0234:类型或命名空间名称' AspNet'在命名空间中不存在' Microsoft' (你错过了一个程序集引用吗?)
它实际上抱怨作为kpm包的一部分的所有vNext依赖项。
那么,有没有人想出一种使用ASP.Net vNext发送邮件的方法呢?
注意
即使"frameworks": {
"aspnet50": { },
"aspnetcore50": { },
"net453": {} // <<< throws compilation errors
},
出现在参考文献下,即使智能感知显示System
可供使用,代码也无法编译。例如,这样的简单陈述虽然看似有效,但
System.Net.Mail
将抛出编译错误,例如:
ASP.NET Core 5.0错误CS0234:类型或命名空间名称&#39; Net&#39;命名空间中不存在&#39;系统&#39; (你错过了一个程序集引用吗?)
ASP.NET Core 5.0错误CS0246:类型或命名空间名称&#39; MailMessage&#39;找不到(你错过了使用指令或汇编引用吗?)
更新
使用最新的Visual Studio 2015 CTP 5,他们似乎修复了智能感知故障。现在using System.Net.Mail;
var m = new MailMessage();
已经没有System.Net
命名空间了。在旁注中,我使用VS 2015预览创建的vNext项目不再有效 - 我在主页上收到403.3错误!啊,使用测试版软件的快乐!
答案 0 :(得分:6)
要使用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
中发送电子邮件,但我怀疑此时此类包存在(尽管毫无疑问)将来某个时候)。
答案 1 :(得分:3)
跟进...... .NET团队已经表示移植System.Net.Mail将不那么简单,可能需要一段时间。这是一个令人失望的事情,因为一个制作网站通常会发送更多的电子邮件。
与此同时,有人刚刚发布了一个名为MailKit的兼容Core-Clr的电子邮件API。你可以在这里阅读https://github.com/jstedfast/MailKit/issues/212