2010-07-12 20 views
5

Bir ASP.NET MVC uygulamasında, e-postaların gönderilmesi nasıl yapılmalıdır? Bunun hakkında düşünüyordum ve bunu MVC yönelimli bir şekilde kullanma fikrini gerçekten çok seviyorum (her şeyden önce bir MVC uygulamasıdır.)ASP.NET MVC - E-posta gönderme nasıl yapılmalı?

Demek istediğim, kullanıcı gerçekten sadece bir modele geçmesi gereken bir görünümdür. Bu, bazı soruları gündeme getiriyor: Bir eylem yürütüldüğünde, hem istekte bulunan tarayıcıya hem de SMTP sunucusuna aynı anda görünümler nasıl sunmalıyız? Çerçevenin bunu destekleyecek herhangi bir imkanı var mı? Değilse, bu tür işlevler için 3. taraf yayın/rehberlik var mı? MVC şekilde gönderme e-posta tedavi için

alternatif:

  • Eposta gönderen kod kontrolörün eylem yöntemleri gösterir.
  • E-posta gönderme, Model nesnesinin bir davranıştır.

ASP.NET MVC uygulamalarınızda e-postaların gönderimini nasıl ele alıyorsunuz? MVC odaklı bir yaklaşım hakkında ne düşünüyorsunuz?

cevap

6

Genellikle yeni bir sonuç türüne ihtiyacınız olduğunda, ActionResult'dan devralan yeni bir MyResult nesnesini programlayabilirsiniz. Bu şekilde, eylem yönteminiz belirtilen sonuç türünü seçmekte özgür olacaktı ve View Engine, yeni sonuç türünde ExecuteResult() yöntemini çağırırdı; bu, verilerin nasıl oluşturulacağına ilişkin mantığı tutacaktır.

Ancak, yaptığınız gibi yaptığınız gibi bir Görünümden HTML almak ve e-postayla göndermek istediğinizde (bu, web tarayıcısıyla aynı sonuç türünde), the answers to this question bunu kapsamalıdır. MVC 2.0 kodunun cevaplarının en iyi yol olduğuna dikkat edin, çünkü "talebe bir görünüm kazandır" işlevini popüler talebe bağlı olarak ikinci sürümde eklediler.

Sorunuz, programınızdan herhangi bir çıktıya MVC yaklaşımı önermenizi şiddetle tavsiye ederim. E-postaya bir görünüm göndermek, kavramsal olarak başka bir çıktı türüne (PDF, mobil tarayıcı, SMS) bir görünüm göndermekten farklı değildir ve takılabilir görünüm çıktıları oluşturarak uygulamanızın kullanımını genişletmenin kolay bir yolunu bulursunuz.

0

Bu ilginç bir soru. Özel bir ActionFilterAttribute oluşturmayı ve OnResultExecuted yöntemini uygulamayı deneyebilirsiniz. Buradan çıkış html'ini tutup e-postayla gönderebilmelisiniz.

Yapmanız gereken tek şey, özel özniteliğinizle eylem yöntemlerini süslemek ve görünümü çağırarak, çıktıyı tarayıcıya göndermenin yanı sıra e-postayla göndermektir.

+0

Tarayıcıya gönderilen aynı şeyi e-postayla göndermek istemediğimi sanmıyorum. –