Использование System.Net.Mail в проекте ASP NET MVC 6
У меня возникли проблемы с созданием простого почтового отправителя в проекте 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("[email protected]", "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, и проект не будет компилироваться.
В моем проекте .json есть:
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
Ответы
Ответ 1
Я не верю, что SmtpClient переносится в .Net Core. (Вы можете использовать неофициальный обратный просмотр , чтобы найти новые пакеты NuGet, и их нет.)
Поскольку вам не нужен .Net Core, вы можете удалить запись dnxcore50
из своего frameworks
в вашем проекте. json.
Ответ 2
На сегодняшний день теперь можно отправлять электронную почту на dnxcore50 в дополнение к net451 (и множеству других платформ), используя MailKit
Я использую rc1 из ASP.NET 5, и я добавил эти зависимости к моему project.json, чтобы добавить необходимые нуги.
"MimeKit": "1.3.0-beta1",
"MailKit": "1.3.0-beta1"
Таким образом, отсутствие System.Net.Mail в dnxcore50 больше не является проблемой, библиотека MailKit на самом деле гораздо более функциональна, чем любая из старых файлов System.Net.Mail.
Огромное спасибо Джеффри Стедфест за его тяжелую работу.
Ответ 3
Для .NET Core обязательно получите MailKit, обновив project.json, чтобы добавить его как зависимость...
"MailKit": "~1.6.0"
См. MailKit на GitHub для полного примера:
https://github.com/jstedfast/MailKit
Ответ 4
Если вы создали свой проект в Visual Studio 2017, то это решение будет работать:
-
Отредактируйте файл .csproj вашего проекта. Щелкните правой кнопкой мыши имя проекта и выберите "Редактировать Project1.csproj" (в случае, если ваше имя проекта Project1). Откроется файл XML проекта. Измените "TargetFramework" на net452 и добавьте тег "RuntimeIdentifier" со значением win7-x86. Итак, это выглядит так:
[PropertyGroup] [TargetFramework] net452 [/TargetFramework] [RuntimeIdentifier] Win7-x86 [/RuntimeIdentifier]
[/PropertyGroup]
(замените все скобки bij "меньше" и "больше" знаков)
Ваш проект будет связан с .NET Framework 4.5.2, и тогда будут доступны все библиотеки, включая пространство имен System.NET.Mail.
Для меня это рабочее решение...: -)