2015-10-07 11 views
16

Mi sto dilettando con la combinazione ASP 5/MVC 6 e scopro che non so più come fare le cose più semplici. Ad esempio, come si invia un'e-mail?ASP 5, MVC 6 invio e-mail

In MVC 5 mondo che vorrei fare qualcosa di simile:

using (var smtp = new SmtpClient("localhost")) 
{ 
    var mail = new MailMessage 
    { 
     Subject = subject, 
     From = new MailAddress(fromEmail), 
     Body = message 
    }; 

    mail.To.Add(toEmail); 
    await smtp.SendMailAsync(mail); 
} 

Ora questo codice non è più compila come System.Net.Mail sembra non esistono più. Dopo alcuni spunti in internet sembra che non sia più incluso nel nuovo core (dnxcore50). Che mi porta alla mia domanda ...

Come si invia una e-mail nel nuovo mondo?

E una domanda più ampia di dove trovi i sostituti di tutte le cose che non sono più incluse nel core .Net?

+1

Interessante. Hai dato un'occhiata a questa pagina git? https://github.com/dotnet/corefx/issues/1006 – ragerory

+2

Non sei limitato al targeting di dnxcore50 in asp.net 5. Puoi ancora scegliere come target l'intero .net framework (o mono). Quale piattaforma stai prendendo di mira? Windows, Linux? –

+0

Penso/spero che in seguito ci sarà un nuget di mailkit compatibile con dnxcore50, questo è quello che ho intenzione di utilizzare per l'invio di email nelle mie app https://github.com/jstedfast/MailKit ma probabilmente non molti di terze parti le cose saranno disponibili fino a dopo .net core esce dalla beta –

risposta

4

.NET Core ha diverse API mancanti al momento. Questi includono System.Net.Mail.SmtpClient come hai trovato e anche System.ServiceModel.SyndicationFeed troppo che può essere utilizzato per costruire feed RSS o Atom. La soluzione alternativa per questo è il target completo di .NET Framework, anziché .NET Core. Puoi sempre scegliere come target .NET Core dopo che queste API saranno disponibili.

Quindi, nel file project.json è necessario rimuovere il riferimento a dnxcore50 e di aggiungere dnx451 per NET 4.5.1 o dnx46 for .NET 4.6, se non è già presente:

"frameworks": { 
    "dnx451": { 
    "frameworkAssemblies": { 
     "System.ServiceModel": "4.0.0.0" 
     // ..Add other .NET Framework references. 
    } 
    }, 
    // Remove this to stop targeting .NET Core. 
    // Note that you can't comment it out because project.json does not allow comments. 
    "dnxcore50": {    
    "dependencies": { 
    } 
    } 
} 
+2

Sembra che non sia mancante, in quanto non è nemmeno nella pagina di stato, anche se tutto è essenzialmente "fatto". https://github.com/dotnet/corefx-progress/blob/master/src-diff/README.md –

27

mio le librerie open source MimeKit e MailKit ora supportano dnxcore50, che fornisce un'API davvero piacevole per la creazione e l'invio di e-mail. Come bonus aggiuntivo, MimeKit supporta le firme DKIM che sta diventando sempre più una caratteristica indispensabile.

using System; 

using MailKit.Net.Smtp; 
using MailKit; 
using MimeKit; 

namespace TestClient { 
    class Program 
    { 
     public static void Main (string[] args) 
     { 
      var message = new MimeMessage(); 
      message.From.Add (new MailboxAddress ("Joey Tribbiani", "[email protected]")); 
      message.To.Add (new MailboxAddress ("Mrs. Chanandler Bong", "[email protected]")); 
      message.Subject = "How you doin'?"; 

      message.Body = new TextPart ("plain") { 
       Text = @"Hey Chandler, 

I just wanted to let you know that Monica and I were going to go play some paintball, you in? 

-- Joey" 
      }; 

      using (var client = new SmtpClient()) { 
       client.Connect ("smtp.friends.com", 587, false); 

       // Note: only needed if the SMTP server requires authentication 
       client.Authenticate ("joey", "password"); 

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

Quale versione devo installare? Ho provato ad installare 1.3.0-beta6 nella mia libreria di classi ASP.Net Core 1 ma ho ricevuto l'errore "La dipendenza MailKit 1.3.0-beta6 non supporta il framework .NetPlatform, Version = v5.4" – Matthew

+0

MailKit richiede .NETPlatform v5 .5, sembra che tu stia bersagliando la v5.4. – jstedfast

+0

Sono come quello che i modelli RC1 configurano per impostazione predefinita, il che penso che molte persone prenderanno di mira fino a quando RC2 non verrà fuori. – Matthew

1

System.Net.Mail è stato portato su .NET Nucleo ora. Vedere Issue 11792 nel repository corefx. Questa modifica farà parte di .NET Standard 2.0.

Problemi correlati