使用 ASP.Net vNext 发送邮件

Sending mail with 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 error CS0234: The type or namespace name 'AspNet' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)

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

那么,有没有人找到使用 ASP.Net vNext 发送邮件的方法?

备注

即使 System 出现在参考下,即使 Intellisense 显示 System.Net.Mail 可用,代码也不会编译。例如,像这样一个简单的陈述,虽然看起来有效,

using System.Net.Mail; 

var m = new MailMessage();

会抛出编译错误如:

ASP.NET Core 5.0 error CS0234: The type or namespace name 'Net' does not exist in the namespace 'System' (are you missing an assembly reference?)

ASP.NET Core 5.0 error CS0246: The type or namespace name 'MailMessage' could not be found (are you missing a using directive or an assembly reference?)

更新

在最新的 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