¿La mejor manera de enviar un correo electrónico desde una aplicación .NET?

StackOverflow https://stackoverflow.com/questions/57919

  •  09-06-2019
  •  | 
  •  

Pregunta

Estoy trabajando en una aplicación Windows Forms (.NET 3.5) que tiene un controlador de excepciones incorporado para detectar cualquier excepción (Dios no lo quiera) que pueda surgir.Me gustaría que el controlador de excepciones pudiera solicitar al usuario que haga clic en un Enviar reporte de error botón, lo que haría que la aplicación enviara un correo electrónico a mi dirección de correo electrónico de FogBugz.

¿Cuál es la mejor manera de hacer esto? ¿Hay algún problema a tener en cuenta?

¿Fue útil?

Solución

Querrá utilizar la clase SmtpClient como se describe aquí.
No hay trampas: enviar correos electrónicos es tan fácil como parece.

Otros consejos

No debería tener que preocuparse por las credenciales del cliente y simplemente usar SmtpClient como lo sugiere Esteban.Necesitará que el usuario proporcione una URL válida del servidor Smtp en la configuración, pero la mayoría de los ISP permiten smtp anónimo siempre que esté en su red (uno de sus clientes), siempre que el usuario ingrese la URL del servidor smptp de su ISP, entonces la mayoría la gente no tendría ningún problema.

Nota:Hay una sección predefinida del archivo .config para almacenar las opciones de configuración para el objeto SmtpClient.Si establece la configuración allí, no tiene que configurar nada explícitamente en su código al enviar un correo electrónico.A continuación se muestra un ejemplo de la sección:

<system.net>
   <mailSettings>
      <smtp deliveryMethod="Network" from="stuff@somewhere.com.au">
         <network host="smtp.somewhere.com.au" />
      </smtp>
   </mailSettings>
</system.net>

El nombre de usuario y la contraseña son opcionales.Intellisense funciona para estas partes del archivo de configuración.

Editar:Ligera corrección a mi ejemplo de código.

En un ambiente controlado, usar SmtpClient sería la respuesta.Pero en la máquina de un usuario necesitaría un servidor SMTP para realizar el envío.

Podría solicitarle al usuario sus credenciales SMTP, pero creo que eso no sería práctico para su caso.Como usuario, no me gustaría proporcionar mis credenciales SMTP a una aplicación aleatoria (piense en SPAM).Tampoco desea codificar sus propias credenciales SMTP en la aplicación, sería trivial para un usuario malintencionado rastrear esas credenciales y usar su servidor para enviar SPAM.

Lo ideal sería poder utilizar el agente de correo del usuario para enviar el correo electrónico.Estaba pensando que podrías formular y ejecutar un mailto:URL, pero no estoy seguro de si podrá especificar el cuerpo o los archivos adjuntos del mensaje.

Mencionaste que estás usando Fogbugz.

Intentar http://www.fogcreek.com/FogBugz/docs/60/topics/customers/BugzScout.html?isl=59722o http://www.fogcreek.com/FogBugz/blog/post/C-wrapper-for-the-FogBugz-API.aspx?isl=59722

Hay un código de muestra, creo que en su directorio de instalación de Facebook.Verifiqué con Michael Pryor re:licencia y dijo que estaba bien usar su código, pero YMMV, así que lo comprobaría.

Proporciona un buen punto de partida.

Es posible que también desee consultar el tercero aspNetCorreo electrónico biblioteca, que tiene muchas funciones útiles que ofrecer además de las que le ofrece System.Net.Mail.

Querrá utilizar la clase SmtpClient como se describe aquí.No hay trampas: enviar correos electrónicos es tan fácil como parece.

Una extensa Preguntas frecuentes sobre System.Net.Mail se encuentra aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top