在 ASP NET MVC 6 项目中使用 System.Net.Mail
Using System.Net.Mail in ASP NET MVC 6 project
我在 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": { }
}
我不认为 SmtpClient 正在移植到 .Net Core。 (您可以使用 unofficial reverse package lookup 查找新的 NuGet 包,但没有。)
由于您不需要 .Net Core,您可以从 project.json 中的 frameworks
中删除 dnxcore50
条目。
从今天开始,除了 net451(以及许多其他平台)之外,现在还可以使用 MailKit
在 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 的辛勤工作。
对于 .NET Core,请务必通过更新 project.json 将其添加为依赖项来获取 MailKit...
"MailKit": "~1.6.0"
有关完整示例,请参阅 GitHub 上的 MailKit:
https://github.com/jstedfast/MailKit
如果您在 Visual Studio 2017 年设置了项目,那么此解决方案将有效:
编辑项目的 .csproj 文件。右键单击项目名称并选择 'Edit Project1.csproj'(如果您的项目名称是 Project1)。项目的 XML 文件打开。将 'TargetFramework' 更改为 net452 并添加值为 win7-x86 的 'RuntimeIdentifier' 标记。所以它看起来像这样:
[物业组]
[目标框架]net452[/目标框架]
[运行时标识符]win7-x86[/运行时标识符]
[/PropertyGroup]
(替换所有括号bij 'less than'和'greater than'符号)
您的项目将链接到 .NET Framework 4.5.2,然后所有库都可用,包括 System.NET.Mail 命名空间。
对我来说,这是一个可行的解决方案...:-)
我在 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": { }
}
我不认为 SmtpClient 正在移植到 .Net Core。 (您可以使用 unofficial reverse package lookup 查找新的 NuGet 包,但没有。)
由于您不需要 .Net Core,您可以从 project.json 中的 frameworks
中删除 dnxcore50
条目。
从今天开始,除了 net451(以及许多其他平台)之外,现在还可以使用 MailKit
在 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 的辛勤工作。
对于 .NET Core,请务必通过更新 project.json 将其添加为依赖项来获取 MailKit...
"MailKit": "~1.6.0"
有关完整示例,请参阅 GitHub 上的 MailKit: https://github.com/jstedfast/MailKit
如果您在 Visual Studio 2017 年设置了项目,那么此解决方案将有效:
编辑项目的 .csproj 文件。右键单击项目名称并选择 'Edit Project1.csproj'(如果您的项目名称是 Project1)。项目的 XML 文件打开。将 'TargetFramework' 更改为 net452 并添加值为 win7-x86 的 'RuntimeIdentifier' 标记。所以它看起来像这样:
[物业组] [目标框架]net452[/目标框架] [运行时标识符]win7-x86[/运行时标识符] [/PropertyGroup]
(替换所有括号bij 'less than'和'greater than'符号) 您的项目将链接到 .NET Framework 4.5.2,然后所有库都可用,包括 System.NET.Mail 命名空间。
对我来说,这是一个可行的解决方案...:-)