Estoy desarrollando una aplicación donde un usuario hace clic/presiona ingresar en un botón determinado en una ventana, la aplicación realiza algunas comprobaciones y determina si envía un par de correos electrónicos o no, luego muestra otra ventana con un mensaje.¿Enviar correo electrónico de forma asíncrona en C#?
Mi problema es que enviar los 2 correos electrónicos ralentiza notablemente el proceso, y durante algunos (~ 8) segundos la primera ventana se ve congelada mientras realiza el envío.
¿Hay alguna manera en que pueda hacer que estos correos electrónicos se envíen en segundo plano y mostrar la siguiente ventana de inmediato?
Por favor, no limite su respuesta con "use la clase X" o "simplemente use el método X", ya que aún no estoy muy familiarizado con el idioma y se agradecerá más información.
Gracias.
¿Alguna vez su aplicación tiene que hacer algo con el resultado (éxito, falla, otro) del envío del correo electrónico? Esto puede afectar si alguna vez tiene que esperar o buscar el resultado de enviar el correo (y por lo tanto * cómo * lo hace), o si se trata más bien de un tipo de "disparar y olvidar". – JaredReisinger
En realidad, no es más una cuestión de "olvida y olvida" como la llamas. Es algo bastante simple, creo, pero obviamente no tanto para mí. Estoy viendo las diferentes respuestas en este momento y los resultados de las pruebas. –
Si miras mi respuesta, te he dado un ejemplo pequeño (¡pero debería estar funcionando, aunque no probado!) De cómo enviar los correos electrónicos no solo de forma asíncrona, sino de cómo manejar los resultados * y * mostrar los comentarios a la IU . – James