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
}
}
}
}
}