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

时间:2015-05-18 09:33:50

标签: .net asp.net-core-mvc smtpclient system.net.mail 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);
    }

我已经包含了依赖&#39; System.Net.Mail&#39;,但工具提示说该库在DNX 4.5.1中可用,但在DNX Core 5.0中不可用,并且项目将无法编译。< / p>

在我的project.json中有:

"frameworks": {
    "dnx451": { },
    "dnxcore50": { }
}

4 个答案:

答案 0 :(得分:12)

截至今天,除了net451(和许多其他平台)之外,现在可以使用New Version

在dnxcore50上发送电子邮件

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

"MimeKit": "1.3.0-beta1",
"MailKit": "1.3.0-beta1"

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

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

答案 1 :(得分:5)

我不相信SmtpClient被移植到.Net Core。 (您可以使用unofficial reverse package lookup查找新的NuGet包,但没有一个。)

由于您不需要.Net Core,因此您可以从project.json中的dnxcore50中删除frameworks条目。

答案 2 :(得分:1)

对于.NET Core,请务必通过更新project.json获取MailKit以将其添加为依赖项...

"MailKit": "~1.6.0"

有关完整示例,请参阅GitHub上的MailKit: https://github.com/jstedfast/MailKit

答案 3 :(得分:0)

如果您在Visual Studio 2017中设置了项目,那么此解决方案将起作用:

  1. 编辑项目的.csproj文件。右键单击项目名称,然后选择“编辑Project1.csproj”(如果项目名称为Project1)。项目的XML文件打开。将'TargetFramework'更改为net452并添加值为win7-x86的'RuntimeIdentifier'标记。所以它看起来像这样:

    [的PropertyGroup]   [TargetFramework] net452 [/ TargetFramework]   [RuntimeIdentifier] WIN7 86 [/ RuntimeIdentifier] [/的PropertyGroup]

  2. (替换所有括号bij'小于'和'大于'符号) 您的项目将链接到.NET Framework 4.5.2,然后所有库都可用,包括System.NET.Mail命名空间。

    对我来说,这是一个有效的解决方案......: - )