Ссылка на пространство имен отправителя электронной почты для веб-приложения ASP.Net Framework .Net Core. - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть отправитель электронной почты, работающий, как показано ниже, для консольного приложения C # с .Net Framework 4.6.1 в качестве целевой платформы для приложения.Однако я попытался повторно использовать код в веб-проекте ASP.Net на C # с .Net Core 1.0 в качестве целевой платформы, но пространство имен System.Net.Mail недоступно в .Core Framework.

Какая ссылка используетсядобавить в C # ASP.Net веб-проект с .Net Core 1.0, чтобы email_sender можно было повторно использовать?В качестве альтернативы есть ссылка для использования .Net Core 1.0 для отправки электронной почты?

using System.Net;
using System.Net.Mail;

private static void email_sender()
{
    string filename = @"<attachment path>";
    MailMessage mail = new MailMessage();
    SmtpClient SmtpServer = new SmtpClient("mainserver.domain.com");
    mail.From = new MailAddress("from@fromdomain.com");
    mail.To.Add("receiver@domain.com");
    mail.Subject = "Email subject";
    mail.Body = "Report";
    Attachment attachment = new Attachment(filename);
    mail.Attachments.Add(attachment);
    SmtpServer.Port = 25;
    SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
    SmtpServer.EnableSsl = false;
    SmtpServer.Send(mail);
}

1 Ответ

0 голосов
/ 26 сентября 2018

Не используйте этот класс.Сама документация предупреждает, что она устарела, и «настоятельно рекомендует» людям использовать MailKit или MimeKit.Он даже выдает предупреждение компиляции об этом.

Последняя версия MailKit для NuGet - 2.06 и предназначена для .NET Standard 1.3, 1.6 и 2.0, что означает, что она может использоваться с любым ядром .NETверсия.Если вы посмотрите на Github Repo проекта , вы увидите, что он предоставляет lot функций электронной почты, которые недоступны с System.Net.Mail.SmtpClient, например отправка сообщений MIME, HTMLтела и т. д.

Для облегчения миграции MailKit позволяет явно приводить System.Net.Mail.MailMessage к классу MimeMessage.В качестве первого шага вы можете использовать уже существующий код MailMessage и изменить только код, связанный с SmtpClient:

        using (var client = new MailKit.Net.Smtp.SmtpClient ()) {
            client.Connect ("mainserver.domain.com", 25, false);
            // Note: only needed if the SMTP server requires authentication
            client.Authenticate ("joey", "password");

            var message=(MimeMessage)mail;

            client.Send (message);
            client.Disconnect (true);
        }

В документах показано, как создавать более сложные сообщения , прикреплять изображения,файлы и т. д. с использованием MimeMessage напрямую.

Пример в документации показывает, как создать сообщение со встроенными изображениями, телом HTML и вложениями.Этот упрощенный пример показывает только то, что необходимо для добавления вложения:

        var message = new MimeMessage ();
        message.From.Add (new MailboxAddress ("Joey", "joey@friends.com"));
        message.To.Add (new MailboxAddress ("Alice", "alice@wonderland.com"));
        message.Subject = "How you doin?";

        var builder = new BodyBuilder ();

        // Set the plain-text version of the message text
        builder.TextBody = @"Hey Alice,... ";

        // We may also want to attach a calendar event for Monica's party...
        builder.Attachments.Add (@"C:\Users\Joey\Documents\party.ics");

        // Now we just need to set the message body and we're done
        message.Body = builder.ToMessageBody ();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...