11

我无法在 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);
    }

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

在我的 project.json 中有:

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

4 回答 4

12

到今天为止,现在可以使用 MailKit 在 dnxcore50 和 net451(以及许多其他平台)上发送电子邮件

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

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

所以在 dnxcore50 中缺少 System.Net.Mail 不再是问题,MailKit 库实际上比任何旧的 System.Net.Mail 的东西都更丰富。

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

于 2015-12-05T21:48:08.573 回答
5

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

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

于 2015-05-20T14:00:58.667 回答
1

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

"MailKit": "~1.6.0"

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

于 2016-10-10T15:56:34.870 回答
0

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

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

    [PropertyGroup] [TargetFramework]net452[/TargetFramework] [RuntimeIdentifier]win7-x86[/RuntimeIdentifier] [/PropertyGroup]

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

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

于 2017-05-31T10:32:40.900 回答