【问题标题】:Sending mail with ASP.Net vNext使用 ASP.Net vNext 发送邮件
【发布时间】:2015-03-18 04:16:30
【问题描述】:

一般来说,在旧版 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 出现在参考下,即使 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 错误!啊,使用测试版软件的乐趣!

【问题讨论】:

  • 我觉得用ctp 5 net 4.5.3已经不多了,已经改名为4.6
  • @LucaMorelli:这又是一团糟。 MSI 说“正在安装 4.5.3 ...”,但在添加/删除程序中,它显示 4.6,参考也是如此 - 例如...\4.5.3\System.Core.dll

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


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢,今晚试一试。 net453 是让事情正常进行的一次绝望尝试,尽管我知道我不应该针对它。我认为重命名只是装饰性的(请参阅我上面的评论)(希望他们会在最终版本之前解决这个名称混乱)。
  • 成功了!当需要删除一些框架时,我正在添加更多框架! :)
  • 让我大吃一惊的是,ASP.net 5 在 Release Candidate 1 Update 1 中没有本地发送电子邮件的方式。这是大多数网站必须具备的,不是吗?我知道跨平台需要考虑很多事情,但是我工作过的几乎每个网站都需要电子邮件功能(忘记密码、联系我们、收据等)。这是让人们留在 Windows/IIS 堆栈上的“陷阱”吗?我看到@Simon-Ordo 发布了一个潜在的第 3 方库 MailKit。还有其他好的选择吗?
【解决方案2】:

跟进... .NET 团队表示移植 System.Net.Mail 将不那么简单,可能需要一段时间。这真令人遗憾,因为生产网站通常不仅仅是发送少量电子邮件。

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

【讨论】:

    猜你喜欢
    • 2011-06-26
    • 1970-01-01
    • 2011-05-24
    • 2014-08-14
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多