2015-01-20 3 views
14

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

Реферирование в "net453" рамки в project.json

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

причин все ад вырваться с ошибками, например:

.NET Framework 4.5.3 ошибка CS0234: тип или пространство имен имя 'Сеть САШ' не существует в пространстве имен «Microsoft» (вам не хватает ссылки на сборку?)

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

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

Примечание

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

using System.Net.Mail; 

var m = new MailMessage(); 

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

ASP.NET ядра 5,0 ошибка CS0234: тип или пространство имен имя «Net» не делает существуют в пространстве имен «Система» (вам не хватает ссылки на сборку?)

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

Update

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

+0

Я думаю, что с ctp 5 net 4.5.3 не больше, было переименовано 4.6 –

+0

@LucaMorelli: Это еще один беспорядок. MSI говорит «Установка 4.5.3 ...», но в «Установка и удаление программ» он показывает 4.6, а также ссылки - например. '... \ 4.5.3 \ System.Core.dll' – Mrchief

ответ

6

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

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

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

Таким образом, в вашем случае, удалите net453 и aspnetcore50 цели и вaspnet50 цели добавить рамочную ссылку на System.Net.Mail.

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

+0

Спасибо, сегодня это даст. 'net453' был отчаянной попыткой заставить все работать, хотя я знал, что не должен его нацеливать. И переименование просто косметическое (см. Мой комментарий выше). Я думаю (мы надеемся, что они будут разбирать это имя до конца финального выпуска). – Mrchief

+2

Это сделало трюк! Я добавлял больше фреймворков, когда пришло время их удалить! :) – Mrchief

+2

Вид ударов мой взгляд, что ASP.net 5 находится в Release Candidate 1 Update 1 без родного способа отправки электронной почты. Это необходимо для большинства веб-сайтов, не так ли? Я понимаю, что, перейдя на кросс-платформу, есть много вещей, которые нужно учитывать, но почти каждый веб-сайт, на котором я когда-либо работал, нуждался в функциях электронной почты (забыли пароль, свяжитесь с нами, квитанции и т. Д.). Это «gotcha», чтобы держать людей в стеке Windows/IIS? Я вижу, что @ Simon-Ordo опубликовал потенциальную стороннюю библиотеку MailKit. Есть ли другие хорошие варианты? – Sam

3

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

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

Смежные вопросы