Отправка почты с помощью ASP.Net vNext

В старых версиях ASP.Net и .Net отправка почты осуществлялась через классы System.Net.Mail, которые находились в System.dll. Теперь с KRE vNext не имеет System.Net.Mail как отдельный пакет.

Ссылка на структуру "net453" в project.json

"frameworks": {
    "aspnet50": { },
    "aspnetcore50": { },
    "net453": {}       // <<< throws compilation errors
},

заставляет все ад сломаться с ошибками вроде:

Ошибка .NET Framework 4.5.3 CS0234: Тип или имя пространства имен "AspNet" не существует в пространстве имен "Microsoft" (вам не хватает ссылки на сборку?)

Он фактически жалуется на все зависимости vNext, которые являются частью пакетов kpm.

Итак, кто-нибудь выяснил способ отправки писем с помощью ASP.Net vNext?

Примечание

Даже если System появляется в разделе Ссылки, и хотя Intellisense показывает, что System.Net.Mail доступен для использования, код не компилируется. Например, простой оператор, подобный этому, хотя и действителен,

using System.Net.Mail; 

var m = new MailMessage();

выдаст ошибку компиляции, например:

Ошибка ASP.NET Core 5.0 CS0234: Тип или имя пространства имен "Сеть" не существует в пространстве имен "Система" (вам не хватает ссылки на сборку?)

Ошибка ASP.NET Core 5.0 CS0246: имя типа или пространства имен MailMessage не может быть найдено (вам не хватает директивы using или ссылки на сборку?)

Обновить

С последней версией Visual Studio 2015 CTP 5 они, похоже, исправили ошибку intellisense. Теперь System.Net больше не имеет пространства имен Mail. На стороне примечания, проект vNext, который я создал с предварительным просмотром VS 2015, больше не работает - я получаю ошибку 403.3 на домашней странице! Ах, радость от работы с бета-программным обеспечением!

Ответы

Ответ 1

Чтобы использовать System.Net.Mail, ваше приложение может ориентироваться только на aspnet50. Цель aspnetcore50 не имеет такой поддержки (по крайней мере, не сейчас, насколько я знаю).

У вас никогда не должно быть целевого приложения net453 (которое, как упоминалось в комментарии Luca в комментарии, с тех пор переименовано), поскольку приложения ASP.NET 5 не запускаются на этой платформе.

Приложение, нацеленное на aspnet50, может вообще ссылаться на любой пакет NuGet.NET 4.0+ или GAC.

Итак, в вашем случае удалите цели net453 и aspnetcore50, а в пределах aspnet50 добавьте ссылку на фреймворк на System.Net.Mail.

Полная альтернатива - найти другой существующий пакет NuGet, который поддерживает отправку электронной почты как в aspnet50, так и aspnetcore50, но я сомневаюсь, что такой пакет существует в это время (хотя, без сомнения, он будет в какой-то момент в будущем).

Ответ 2

Проследить... Команда .NET заявила, что портирование System.Net.Mail будет менее простым и, скорее всего, займет некоторое время. То, что облом с рабочего сайта обычно делает больше, чем небольшая отправка электронной почты.

В то же время кто-то только что выпустил API-адрес электронной почты, совместимый с Core-Clr, который называется MailKit. Вы можете прочитать об этом здесь https://github.com/jstedfast/MailKit/issues/212