2008-11-10 8 views
5

¿Cuáles son algunas ideas (utilizando .NET y SQL 2005) para implementar un servicio que envía correos electrónicos? Los correos electrónicos deben ser impulsados ​​por datos. La fecha y la hora en que se enviará un correo electrónico es un campo en una tabla.Email Notification Service

Respuesta

1

Puede usar activadores para enviar correos electrónicos en ACTUALIZAR/ELIMINAR/INSERTAR. Los desencadenantes se pueden implementar con .Net, simplemente envíe correos desde allí usando las clases en el espacio de nombres System.Net.Mail.

Aquí hay un buen article cómo implementar desencadenadores CLR (.Net) en .Net.

Para un servidor SMPT liviano, y para minimizar los retrasos, puede usar el recomendado en Kenny's answer.

0

que iba a sugerir SQL Server Notification Services, que se encargará el trabajo muy bien. Pero veo que se ha eliminado de SQL Server 2008, por lo que probablemente no quiera ir allí.

2

He creado varios servicios de notificación por correo electrónico de gran volumen utilizados para enviar correos electrónicos basados ​​en datos en el pasado. Algunas recomendaciones:

  • ver en el uso de un proveedor de servicios de correo electrónico de alta calidad que se especializa en el manejo de rebotes, cancela la suscripción, gestión de listas de ISP y negro, etc. Si el envío de correo electrónico es fundamental para su negocio, pero no su actividad principal se valdrá la pena. La mayoría tendrá una API para enviar mensajes con plantilla, hacer clic en seguimiento, abrir tasas y proporcionar activadores, etc.
  • Mire en el Service Broker de SQL Server para poner los mensajes en cola, de lo contrario, puede considerar los servicios de Microsoft Message Queuing. No es necesario crear su propio servicio de colas. Pasamos demasiado tiempo lidiando con el código de infraestructura de búsqueda cuando esto ya estaba resuelto.
  • Desarrolle un conjunto flexible de eventos en su nivel empresarial para permitir la activación de dichos mensajes y ponerlos en su cola de forma asincrónica, esto le ahorrará mucho dolor en el largo plazo en lugar de sondear el DB o piratearlo con desencadenadores de base de datos.
1

Gracias a todos por los comentarios. Para simplificar, comencé con un SP que busca los recordatorios que se enviarán y utiliza sp_ send_dbmail (Correo de la base de datos SQL) para enviar los correos electrónicos. Esto funciona en un trabajo cada minuto. Actualizo el registro para indicar que el recordatorio fue enviado con el MailItemId enviado desde sp_ send_dbmail. El volumen de recordatorios esperado es el peor caso en el rango de 10^2 por día.

Me encantaría recibir comentarios sobre las deficiencias que la gente piensa que puede tener esta solución.

Por cierto, no puedo creer que Vista no venga con un servidor SMTP local. Afortunadamente, Google es más generoso, utilicé el servidor de Gmail para realizar pruebas.