Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/09/2007, 06:22
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 24 años
Puntos: 4
Envío de muchos correos en multitarea (C#)

Muy buenas. Cada vez que se inserta una oferta en el portal de empleo en el que estoy trabajando me gustaría que se le enviara un aviso por correo electrónico a todos los candidatos apuntados al portal. He pensado en utilizar un hilo multitarea para no sobrecargar el servidor, ya que estamos hablando de unos 1200 candidatos.

No estoy muy familiarizado con C#, el lenguaje en el que estaba originalmente el Portal, pero os muestro lo que he hecho hasta ahora por si hubiera algo que cambiar o mejorar.

Gracias y un saludo.

Código PHP:
        private void btnPublicar_Click(object sender, System.EventArgs e)
        {
            
//nueva oferta en la base de datos
            
if(Page.IsValid)
            {
                
strCon = ConfigurationSettings.AppSettings["constring"];
                
con = new SqlConnection(strCon);
                
string strSql = "INSERT INTO ofertas ....";
                
SqlCommand cmd = new SqlCommand(strSql,con);
                
cmd.Parameters.Add("@idEmp",Session["id_empresa"].ToString());
                .....            
                
con.Open();
                try
                {
                    
cmd.ExecuteNonQuery();
                    
//Los datos se han enviado correctamente"
                    
Disable();
                }
                catch (
Exception ex)
                {
                    
//Error al enviar los datos
                
}
                
finally
                
{
                    
con.Close();
                }

                
//mensaje al administrador
                
string message = "<body>" +
                    
"<font><b><i>\"" + this.txtNomEmp.Text + "\"</i></b> " +
                    
"ha publicado una nueva oferta para <b><i>\"" +
                    
this.txtPuesto.Text + "\"</i></b>. " +
                    
"<a href='http://miportaldeempleo.ext/admin/Ofertas.aspx'" + 
                    
"'>Ver Ofertas</a></font>" +
                    
"</body>";
                
Cartero.Mensaje mail = new Cartero.Mensaje();
                
mail.Hacia = "[email protected]";
                
mail.Titulo = "Nueva oferta";
                
mail.Cuerpo = message;
                try
                {
                    
mail.enviar();
                }
                catch
                {
                    
//no hacemos nada
                
}
                
//Creación de una tarea para el envío del aviso a todos los candidatos.
                
try
                {
                    
Thread tarea = new Thread(new ThreadStart(envioMasivo));
                    
tarea.Priority = ThreadPriority.Lowest;
                    
tarea.Start();
                }
                catch
                {}
                
//Fin de tarea.
            
}
        }

        private 
void envioMasivo()
        {
            
string message = "<body>" +
                
"<font><b><i>\"" + this.txtNomEmp.Text + "\"</i></b> " +
                
"ha publicado una nueva oferta para <b><i>\"" +
                
this.txtPuesto.Text + "\"</i></b>. " +
                
"<a href='http://miportaldeempleo.ext/'" + 
                
"'>Portal de Empleo</a></font>" +
                
"</body>";

            
string strCon = ConfigurationSettings.AppSettings["constring"];
            
con = new SqlConnection(strCon);
            
string strSql = "SELECT mail FROM candidatos";
            
SqlCommand cmd = new SqlCommand(strSql,con);
            
SqlDataReader r = cmd.ExecuteReader();
            while(
r.Read())
            {
                
Cartero.Mensaje mail = new Cartero.Mensaje();
                
mail.Hacia = r.GetValue(0).ToString();
                
mail.Titulo = "Nueva oferta de empleo!!";
                
mail.Cuerpo = message;
                try
                {
                    
mail.enviar();
                }
                catch
                {
                    
//no hacemos nada
                
}
            }
        }
    }
} 
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!