2009-05-31 16 views
5

¿Hay alguna forma de en MVC para que funcione System.Net.Mail SendAsync, en lugar del método de bloqueo de envío?ASP.NET MVC: Enviar correo electrónico utilizando SendAsync (System.Net.Mail)

Intenté usarlo pero presioné el error "La página que inicia una operación asincrónica tiene que tener el atributo Async", que obviamente no puedo resolver (¿o puedo?) Porque no hay una página ASPX con una directiva @Page donde podría agregar el atributo Async.

ayuda es muy apreciada :(

Respuesta

1

es posible que desee considerar la posibilidad de poner el correo electrónico en una tabla de base de datos y luego tener un daemon que envía correos electrónicos procesando la cola.

a) if youre not sending billions of emails you can have a log of what you sent 
b) you can resend if something fails. 

depende de cuán importantes son estos correos electrónicos, pero si son importantes desde el punto de vista empresarial y no deben perderse, debe utilizar este enfoque.

+0

@downvoter - URM así que lo que si el servidor de correo está inactivo o inaccesible que? Quiero perder el correo –

+0

+1 - Simon, este es un principio de sonido, que he practicado con éxito. También ayuda a separar preocupaciones y administrar una única conexión al servidor SMTP (personalizamos la seguridad de nuestras aplicaciones para filtrar aplicaciones que están permitidas para usar nuestro servicio WCF). – Russell

2

Si está utilizando un servicio de terceros como gmail para enviar su correo electrónico y depende de SendEmail o SendAsync, puede configurar su propio servidor SMTP que luego se retransmitirá a gmail. La ventaja es que SendEmail regresará mucho más rápido y es posible que pueda olvidarse de la cosa asincrónica completa.

De esta manera, si gmail lo rechaza por cualquier motivo, el correo electrónico aún se ubicará en su cola local.

Esta es una manera rápida y sucia de obtener una configuración de envío de correo electrónico algo confiable.

Instructions (not personally tested, but i did this years ago*) o see this for Windows 7

* por supuesto que sólo recordaba lo hice después de pasar un largo tiempo de conversión a asíncrono :-(

Cuestiones relacionadas