0

Buen día. Tengo una pagina donde la persona ingresa sus datos,se guarda en la BD, y envia un correo y aparece un modal. Todo bien al usar la funcion que enviar el email pero cuando lo pongo para que se lanze en un Thread, me sale el siguiente error.

Referencia a objeto no establecida como instancia de un objeto.

Funciona bien de esta manera.

EnviarCorreo(nombre, telefono, correo, dum);

De esta manera ya no funciona

Thread miHilo = new Thread(delegate()
{
  EnviarCorreo(nombre, telefono, correo, dum);
}); miHilo.Start();

Funcion

   public static void EnviarCorreo(string nombre, string telefono, string correo, string dum)
    {

        try
        {

            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
            mail.From = new MailAddress(data, data, Encoding.UTF8);
            mail.Subject = "data"

            //Aqui es DONDE ME SALE ERROR,PERO CUANDO LO LLAMO DE MANERA NORMAL , NO ME SALE ERROR, AL USAR THREAD, SI ME SALE ESE ERROR JUSTO AQUI
            LinkedResource imagenLogo = new LinkedResource(HttpContext.Current.Server.MapPath("~/Assets/imagenes/logo.png"), MediaTypeNames.Image.Jpeg);
            imagenLogo.ContentId = Guid.NewGuid().ToString();

He estado buscando pero no entiendo bien la diferencia en este caso. Gracias

1 Answers1

1

Cuando ejecutas dentro del thread dejas de estar en el contexto web, por lo tanto HttpContext.Current no aplica, por eso seguramente este en null, deberias enviar el valor por parametro

string logo = HttpContext.Current.Server.MapPath("~/Assets/imagenes/logo.png");
Thread miHilo = new Thread(delegate()
{
   EnviarCorreo(nombre, telefono, correo, dum, logo);
}); 
miHilo.Start();

entonces el metodo recibe el valor

public static void EnviarCorreo(string nombre, string telefono, string correo, string dum, string logo)
{
   //codigo
Leandro Tuttini
  • 35,380
  • 3
  • 13
  • 40
  • Muchas Gracias. No sabia eso de Thread, gracias aprendí algo nuevo! –  Jan 24 '19 at 22:21