visual varios studio form enviar electronico destinatarios desde credenciales correo con archivo adjunto c# .net asp.net email

varios - Retraso en el envío de correos electrónicos en C#



enviar email c# windows form (4)

El SmtpClient es un cliente bastante tonto y no es compatible con esto: los envíos son inmediatos, ya sean sincrónicos o asincrónicos. Es posible que pueda hacerlo utilizando una integración de Exchange. Sin embargo, no estoy seguro de qué API están expuestas para Exchange. La forma más sencilla sería mantener el mensaje en una tabla de base de datos junto con el tiempo de envío y tener un proceso fuera de línea que escanea regularmente esta tabla y busca mensajes cuyo valor de tiempo de envío ha pasado y no están marcados como enviado

Estamos escribiendo una función para enviar un recordatorio por correo electrónico a los clientes en x días y nos preguntamos si fue posible retrasar el envío de los correos electrónicos de manera similar a como lo hace en Outlook (Nuevo correo> Botón de opciones> No entregar antes) Cª#.

¿Alguien sabe de una manera de hacer esto?


No.

La forma de lograr esto sería que su aplicación escriba el correo electrónico en una cola (podría ser base de datos, archivo, MSMQ, etc.) y luego escriba un proceso separado que, en una fecha posterior, lea el correo de esa cola y lo envíe .

Hasta donde yo sé, el protocolo SMTP no tiene ningún tipo de característica de "envío retrasado". Además, la característica a la que hace referencia en Outlook solo la conserva en la bandeja de salida de su cliente hasta la fecha designada, por lo que es una característica del lado del cliente, no una función del lado del servidor.


Si desea enviar el correo electrónico a un servidor SMTP para mantenerlo durante varios días, el servidor debería admitir esta función. Sin embargo, recomendaría no hacerlo de esa manera. Si tiene un problema con los correos electrónicos faltantes, puede ser difícil localizarlos.

Esto es lo que haría:

  1. Programe los correos electrónicos en su sistema haciendo una entrada de tabla.
  2. Incluya una columna "Enviar fecha" en la tabla donde puede establecer una fecha en el futuro
  3. Escriba un servicio de Windows que se active una vez cada 15 minutos (por ejemplo) y envíe los correos electrónicos en esa tabla donde SendDate <currentDate

Una posibilidad es crear un servicio que se ejecute en una tarea programada procesando correo ''pendiente''. Puede almacenar el correo pendiente en una base de datos SQL. (Dave detalla esto)

Este artículo parece prometedor si desea evitar un servicio "real"

http://www.codeproject.com/KB/aspnet/ASPNETService.aspx