使用ASP.Net vNext发送邮件

时间:2015-01-20 02:30:11

标签: c# .net asp.net-mvc email asp.net-core

在传统的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错误!啊,使用测试版软件的快乐!

2 个答案:

答案 0 :(得分:6)

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

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

定位aspnet50的应用通常可以引用任何.NET 4.0+ NuGet包或GAC引用。

因此,在您的情况下,请移除net453aspnetcore50目标, aspnet50目标中的添加System.Net.Mail的框架参考

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

答案 1 :(得分:3)

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

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