2010-07-12 9 views
5

In un'applicazione ASP.NET MVC, come deve essere gestita l'invio di e-mail? Ci stavo pensando e mi piace molto l'idea di gestirlo in modo MVC (è un'applicazione MVC, dopotutto)ASP.NET MVC - Come devono essere gestite le e-mail di invio?

Quello che voglio dire è che l'email che viene consegnata al l'utente è in realtà solo una vista che dovrebbe avere un modello passato ad esso. Questo solleva alcune domande: come dovremmo consegnare le viste sia al browser richiedente che a un server SMTP contemporaneamente, quando viene eseguita un'azione? Il framework dispone di strutture per supportare questo? In caso contrario, ci sono alcune release/guida di terze parti per questo tipo di funzionalità?

Le alternative per il trattamento di invio di email in modo MVC sono:

  • -mail il codice di invio si presenta nei metodi di azione del controllore.
  • L'invio di e-mail è un comportamento degli oggetti Modello.

Come si gestisce l'invio di e-mail nelle applicazioni ASP.NET MVC? Cosa ne pensi di un approccio orientato al MVC?

risposta

6

Di solito quando è necessario un nuovo tipo di risultato, si programmerà un nuovo oggetto MyResult che erediterebbe da ActionResult. In questo modo il tuo metodo di azione sarebbe libero di scegliere il tipo di risultato indicato, e il motore di visualizzazione chiamerebbe semplicemente il metodo ExecuteResult() sul nuovo tipo di risultato, che avrebbe mantenuto la logica su come eseguire il rendering dei dati.

Tuttavia, dal momento che ciò che si sta facendo sembra voler ottenere l'HTML da una vista e inviarlo tramite e-mail (è lo stesso tipo di risultato del browser Web), lo the answers to this question dovrebbe coprirlo in profondità. Si noti che le risposte con il codice per MVC 2.0 sono il modo migliore per andare, dal momento che hanno aggiunto la funzionalità "rendering di una vista a una stringa" nella seconda versione a causa della grande richiesta.

La tua domanda è buona, in quanto consiglio vivamente un approccio MVC a qualsiasi output del programma. L'invio di una vista alla posta elettronica non è concettualmente diverso dall'invio di una vista a qualsiasi altro tipo di output (PDF, browser mobile, SMS) e creando output di visualizzazione collegabili, si ha un modo semplice per supportare l'espansione dell'utilizzo della propria app.

0

È una domanda interessante. Puoi provare a creare un ActionFilterAttribute personalizzato e implementare il metodo OnResultExecuted. Da lì dovresti essere in grado di ottenere l'output html e inviarlo via email.

Quindi tutto quello che dovresti fare è decorare i metodi di azione con il tuo attributo personalizzato e chiamare la vista dovrebbe inviare l'output al browser e inviarlo via email.

+0

Dubito che difficilmente, se mai, desidero inviare per e-mail la stessa identica cosa che viene inviata al browser. –

Problemi correlati