在ASP .NET MVC 6项目中使用System.Net.Mail

Cam*_*rde 11 .net system.net.mail smtpclient asp.net-core-mvc mailkit

我在ASP NET 5项目中创建一个简单的模拟邮件发件人时遇到了麻烦.

这里的方法:

    public static Task SendMail(string Email, string Subject, string Body)
    {
        SmtpClient client = new SmtpClient();
        client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
        client.PickupDirectoryLocation = "C:\\TMP";

        MailAddress from = new MailAddress("jane@contoso.com", "Jane " + (char)0xD8 + " Clayton", System.Text.Encoding.UTF8);
        MailAddress to = new MailAddress(Email);

        MailMessage message = new MailMessage(from, to);
        message.Body = Body;
        message.BodyEncoding = System.Text.Encoding.UTF8;
        message.Subject = Subject;
        message.SubjectEncoding = System.Text.Encoding.UTF8;

        client.Send(message);
        message.Dispose();

        return Task.FromResult(0);
    }
Run Code Online (Sandbox Code Playgroud)

我已经包含了依赖项'System.Net.Mail',但工具提示说该库在DNX 4.5.1中可用,但在DNX Core 5.0中不可用,并且项目将无法编译.

在我的project.json中有:

"frameworks": {
    "dnx451": { },
    "dnxcore50": { }
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*tte 12

截至今天,它现在可以在除了发送电子邮件上dnxcore50到net451(和许多其他平台)使用MailKit

我正在使用ASP.NET 5的rc1,我将这些依赖项添加到我的project.json中以引入所需的nugets

"MimeKit": "1.3.0-beta1",
"MailKit": "1.3.0-beta1"
Run Code Online (Sandbox Code Playgroud)

因此,dnxcore50中缺少System.Net.Mail不再是一个问题,MailKit库实际上比任何旧的System.Net.Mail更丰富.

非常感谢Jeffrey Stedfast的辛勤工作.

  • @Sam不要在Stack Overflow上进行长时间的讨论,但我认为这句格言:*你怎么吃大象?一次咬一口.*当然适用于Microsoft在.NET Core上所做的工作. (4认同)
  • 向Jeffrey Stedfast致敬,但他的工作不应该是必要的.电子邮件是大多数Web应用程序的重要组成部分:注册确认,密码恢复,论坛响应通知,订单确认等.我们在没有邮件类端口的RC中这一事实略显令人失望.如果一个开发人员可以编写MailKit,那么在ASP.net上工作的聪明的微软团队如何不能移植旧代码呢?阻碍Linux/OSX作为可行的替代方案?我正在挖掘很多新的功能/特性,但这似乎是一个非常严重的遗漏. (2认同)

Mat*_*rey 5

我不相信SmtpClient被移植到.Net Core.(您可以使用非官方的反向包查找来查找新的NuGet包,但没有一个.)

由于您不需要.Net Core,因此可以dnxcore50frameworksproject.json中删除条目.