Использование 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.

Для меня это рабочее решение...: -)