2015-01-20 7 views
14

In legacy ASP.Net e .Net in generale, l'invio della posta è stato effettuato tramite le classi System.Net.Mail che risiedono in System.dll. Ora con KRE, vNext non sembra avere System.Net.Mail come pacchetto separato.Invio di posta con ASP.Net vNext

Riferimento quadro "net453" in project.json

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

cause inferno di rompere sciolto con errori come:

.NET Framework 4.5.3 errore CS0234: Il tipo o dello spazio dei nomi il nome 'aspnet' non esiste nello spazio dei nomi 'Microsoft' (ti manca un riferimento all'assembly?)

I t si lamenta virtualmente di tutte le dipendenze di vNext che fanno parte dei pacchetti kpm.

Quindi, qualcuno ha trovato un modo per inviare mail utilizzando ASP.Net vNext ancora?

Nota

Anche se System appare sotto Riferimenti e ancorché Intellisense mostra System.Net.Mail è disponibile per l'uso, il codice non compilare. Ad esempio, una semplice dichiarazione del genere, anche se appare valida,

using System.Net.Mail; 

var m = new MailMessage(); 

getteranno errore di compilazione come ad esempio:

ASP.NET 5.0 Nucleo errore CS0234: Il tipo o dello spazio dei nomi il nome 'Net' non lo fa esiste nello spazio dei nomi 'Sistema' (manca un riferimento all'assembly?)

Errore di ASP.NET Core 5.0 CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi 'MailMessage' (manca una direttiva using o un assembly riferimento?)

Aggiornamento

Con l'ultima di Visual Studio 2015 CTP 5, che sembrava aver risolto il problema tecnico intellisense. Ora System.Net non ha più lo spazio dei nomi Mail. Una nota a margine, il progetto vNext che ho creato con VS 2015 preview non funziona più - Ricevo un errore 403.3 sulla home page! Ah, la gioia di lavorare con il software beta!

+0

Penso che con ctp 5 net 4.5.3 non è più, è stato rinominato 4.6 –

+0

@LucaMorelli: Questo è un altro pasticcio. L'MSI dice "Installazione 4.5.3 ..." ma in Installazione applicazioni, mostra 4.6 e così fa i riferimenti - ad es. '... \ 4.5.3 \ System.Core.dll' – Mrchief

risposta

6

Per utilizzare System.Net.Mail l'app può scegliere come target solo aspnet50. Il target aspnetcore50 non ha tale supporto (almeno, non ora, per quanto ne so).

Non dovresti mai avere l'obiettivo della tua app net453 (che, come Luca ha citato in un commento, è stato rinominato in ogni caso) perché le app di ASP.NET 5 non funzionano su quella piattaforma.

Un'app destinata al numero aspnet50 può generalmente fare riferimento a qualsiasi pacchetto 4.0 o NuGet di .NET 4.0 o riferimento GAC.

Quindi, nel tuo caso, rimuovere le net453 e aspnetcore50 obiettivi, e all'interno l'obiettivo aspnet50 aggiungere un quadro di riferimento per System.Net.Mail.

Una completa alternativa sarebbe quella di trovare qualche altro pacchetto NuGet esistente che ha il supporto per l'invio di e-mail sia in aspnet50 e aspnetcore50, ma dubito che esista un tale pacchetto in questo momento (anche se senza dubbio ad un certo punto in futuro).

+0

Grazie, ci proveremo stasera. 'net453' è stato un tentativo disparato di far funzionare le cose, anche se sapevo che non dovevo mirare. E la ridenominazione è solo estetica (vedi il mio commento sopra) Penso (speriamo che risolvono questo pasticcio di nomi prima della versione finale). – Mrchief

+2

Questo ha fatto il trucco! Stavo aggiungendo altri framework quando era ora di cancellarne alcuni! :) – Mrchief

+2

Mi viene in mente che ASP.net 5 sia in Release Candidate 1 Update 1 senza un modo nativo per inviare e-mail. Questo è un must per la maggior parte dei siti web, non è vero? Capisco che con il cross-platform ci sono molte cose da considerare, ma quasi tutti i siti web sui quali ho lavorato hanno richiesto funzionalità e-mail (password dimenticata, contattaci, ricevute, ecc.). È questo il "trucco" per mantenere le persone sullo stack Windows/IIS? Vedo @ Simon-Ordo pubblicato su una potenziale libreria di terze parti, MailKit. Ci sono altre buone opzioni? – Sam

3

Per continuare ... Il team di .NET ha dichiarato che il porting di System.Net.Mail sarà meno semplice e richiederà probabilmente un po 'di tempo. Questo è un peccato perché un sito di produzione di solito fa più di un piccolo invio di e-mail.

Nel frattempo, qualcuno ha appena rilasciato un'API di posta compatibile con Core-Clr chiamata MailKit. Potete leggere qui https://github.com/jstedfast/MailKit/issues/212