Pues resulta que cuando empecé a desarrollar las aplicaciones en mi compañía, y las publique por primera vez (que emoción) me di cuenta que de vez en cuando los usuarios me llamaban por determinados problemas que se les presentaban pero no sabían explicarme bien que pasaba. Y me era muy difícil darme cuenta de cuales erran los errores que estaba dando mi aplicación ya que en modo de prueba en mi equipo no sucedían, sin contar que para los usuarios los errores realmente no se mostraban ya que había controlado bien mi código con try catch. Y se me ocurrió algo que después me di cuenta que ya se les había ocurrido a muchos. Guardar los errores que producía mi aplicación en la BD para después poder consultarlos.
Esto me resulto bien, pero al cabo de un tiempo quise encontrar una forma más fácil para esto, ya que me daba un poco de pereza tener que estar revisando cada cierto tiempo por errores. Y qué mejor, que estos, me llegaran a mi correo cada vez que se originaran.
Entonces después de un poco de búsqueda por internet, di con un código que luego adapte a mis necesidades.

public static void Email(string error)
    {
        //creo el mensaje con el usuario que envia y el que recibe
        var message = new MailMessage("usuarioqueenvia@gmail.com", "usuarioquerecibe@yahoo.com");
      // Con copia para… en caso de que quiera mandarselo a mas personas
        message.CC.Add("usuaricopia1@gmail.com ");
        message.CC.Add("usuaricopia2@gmail.com ");
      // El asunto
        message.Subject = "Informe de errores";
     //El cuerpo del mensaje
        message.Body = "un error ha ocurrido en… " + error);
        //servidor de correo smtp
        var smtpMail = new SmtpClient("nombredelservidor");
        smtpMail.Send(message);                
            
    }

 

Como verán es bastante sencillo ya que lo adapte a mi caso pero es bueno saber que pueden agregarle más características como:

  • En caso que el body de tu mensaje quieras mandarlo en un formato HTML

var mimeType = new ContentType("text/html");
  • Si quieres que no solo se pueda ver en html sino también como solo texto puedes usar vistas alternativas. Esto también puedes usarlo para los casos de que el usuario receptor no pueda ver los mensajes de otra forma.

var alternate = AlternateView.CreateAlternateViewFromString(body, mimeType);
 message.AlternateViews.Add(alternate);
  • Si quieren ponerle algun adjunto

message.Attachments.Add(new Attachment(FilePath));

De esta forma cuando mi aplicación me lanzaba algún error lo capturo y me la mando por email.


catch (Exception error)

{

Clase.Email(error.ToString());

}

Nos vemos.