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: 22 años, 2 meses
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 senderSystem.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!