我在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": { }
}
答案 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中设置了项目,那么此解决方案将起作用:
编辑项目的.csproj文件。右键单击项目名称,然后选择“编辑Project1.csproj”(如果项目名称为Project1)。项目的XML文件打开。将'TargetFramework'更改为net452并添加值为win7-x86的'RuntimeIdentifier'标记。所以它看起来像这样:
[的PropertyGroup] [TargetFramework] net452 [/ TargetFramework] [RuntimeIdentifier] WIN7 86 [/ RuntimeIdentifier] [/的PropertyGroup]
(替换所有括号bij'小于'和'大于'符号) 您的项目将链接到.NET Framework 4.5.2,然后所有库都可用,包括System.NET.Mail命名空间。
对我来说,这是一个有效的解决方案......: - )