Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Enviar correos usando PHPmailer a correos de una base de datos

Estas en el tema de Enviar correos usando PHPmailer a correos de una base de datos en el foro de PHP en Foros del Web. ¡Hola de nuevo! Verán, estoy con esto de los correos y quiero que cuando un profesor publique algo a cierto grupo, por ejemplo; 5° A ...
  #1 (permalink)  
Antiguo 02/01/2015, 18:19
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 11 meses
Puntos: 1
Pregunta Enviar correos usando PHPmailer a correos de una base de datos

¡Hola de nuevo!

Verán, estoy con esto de los correos y quiero que cuando un profesor publique algo a cierto grupo, por ejemplo; 5° A Especialidad Programación Turno Matutino, que se envíe a los alumnos registrados en ese mismo grado, grupo, especialidad y turno. Usé este código:

Código PHP:
$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
    
mysql_query("SET NAMES 'utf8'");
  
$insertSQL sprintf("INSERT INTO publicar (imagen, De, Usuario, Semestre, Grupo, Especialidad, Turno, Asunto, Describir, Fecha) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['imagen'], "text"),
                       
GetSQLValueString($_POST['De'], "text"),
                       
GetSQLValueString($_POST['usuario'], "text"),
                       
GetSQLValueString($_POST['Semestre'], "text"),
                       
GetSQLValueString($_POST['Grupo'], "text"),
                       
GetSQLValueString($_POST['Especialidad'], "text"),
                       
GetSQLValueString($_POST['Turno'], "text"),
                       
GetSQLValueString($_POST['Asunto'], "text"),
                       
GetSQLValueString($_POST['Describir'], "text"),
                       
GetSQLValueString($_POST['fecha'], "text"));
                     
$correo "SELECT correo_al FROM alumnos WHERE semestre = ".$_POST['Semestre']." AND grupo = ".$_POST['Grupo']." AND turno = ".$_POST['Turno']." AND especialidad =".$_POST['Especialidad']."";
                       

require(
"phpmailer/class.phpmailer.php");
    
$mail = new PHPMailer();

    
// ---------- adjust these lines ---------------------------------------
    
$mail->Username "******************@gmail.com"// Mi cuenta de Gmail
    
$mail->Password "************"// Mi contraseña
    
$mail->AddAddress($correo); // Variable correo
    
$mail->FromName "PAM"// readable name

    
$mail->Subject "".$_POST['De']." hizo una publicación para tu grupo.";
    
$mail->Body    "El maestro ".$_POST['De']." ha publicado algo para tu grupo. ¿Por qué no entras a PAM y lo revisas? \n\n\n Asunto de la publicación: ".$_POST['Asunto']." \n\n\n - Grupo de desarrollo de PAM. \n\n\n\n Plataforma de Ayuda para Maestros."
    
//-----------------------------------------------------------------------

    
$mail->Host "ssl://smtp.gmail.com"// GMail
    
$mail->Port 465;
    
$mail->IsSMTP(); // use SMTP
    
$mail->SMTPAuth true// turn on SMTP authentication
    
$mail->From $mail->Username;
    if(!
$mail->Send()){
        echo 
"Mailer Error: " $mail->ErrorInfo;
    }
    else{
        echo 
"<script>
alert('Una notificación por correo ha sido enviada.');
</script>"
;
    }

  
mysql_select_db($database_Cetis$Cetis);
  
$Result1 mysql_query($insertSQL$Cetis) or die(mysql_error());

  
$insertGoTo "Publicacion_exitosa.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }

  
header(sprintf("Location: %s"$insertGoTo));

Como verán, la variable $correo contiene comandos SQL para que busque los correos del Grupo, Grado, Especialidad y Turno ingresados al publicar.

Pero no me quiere mandar nada, y ya me cansé de buscar...

¿Alguna ayuda?

¡Gracias por su tiempo!
  #2 (permalink)  
Antiguo 02/01/2015, 20:36
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 10 meses
Puntos: 306
Respuesta: Enviar correos usando PHPmailer a correos de una base de datos

¿y que te trae la variable $correo?
Viene separados por comas, o es un array.

En algún momento usando esta clase, lo que hice fue ir enviando uno por uno.
O sea traer un contacto, tomar los datos, personalizar el cuerpo del email, y enviar.
Luego el siguiente, y el siguiente, etc.. o sea usando un while.

Esto lo tuve que hacer para personalizar el correo, y para poder contar y no pasarme del limite de email permitidos por horas.
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #3 (permalink)  
Antiguo 03/01/2015, 12:07
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: Enviar correos usando PHPmailer a correos de una base de datos

Cita:
Iniciado por C2am Ver Mensaje
¿y que te trae la variable $correo?
Viene separados por comas, o es un array.

En algún momento usando esta clase, lo que hice fue ir enviando uno por uno.
O sea traer un contacto, tomar los datos, personalizar el cuerpo del email, y enviar.
Luego el siguiente, y el siguiente, etc.. o sea usando un while.

Esto lo tuve que hacer para personalizar el correo, y para poder contar y no pasarme del limite de email permitidos por horas.
Pues verás, la varialble $correo, llama a la base de datos para que tome el campo de correo que cumpla con lo que ingresaste en los campos de grado, grupo, especialidad y turno, y eso que me dices no lo ocupo aún, sólo quiero que me mande un correo, porque en la base de datos sólo tengo a un alumno registrado...

Gracias :)
  #4 (permalink)  
Antiguo 03/01/2015, 13:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Enviar correos usando PHPmailer a correos de una base de datos

Ajá...
¿Y en qué parte, mágicamente se ejecuta la consulta contenida en $correo y que estás almacenando asi?:
Código PHP:
Ver original
  1. $correo = "SELECT correo_al FROM alumnos WHERE semestre = ".$_POST['Semestre']." AND grupo = ".$_POST['Grupo']." AND turno = ".$_POST['Turno']." AND especialidad =".$_POST['Especialidad']."";
Porque eso sólo contiene una sentencia SQL, pero no veo en ninguna parte que la mandes a MySQL, y que luego verifiques si se obtuvo algún dato, además de tomar el dato que buscaste...

Cargar una sentencia en SQL en una variable de PHP no hace que se ejecute en MySQL...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/01/2015, 19:49
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: Enviar correos usando PHPmailer a correos de una base de datos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Ajá...
¿Y en qué parte, mágicamente se ejecuta la consulta contenida en $correo y que estás almacenando asi?:
Código PHP:
Ver original
  1. $correo = "SELECT correo_al FROM alumnos WHERE semestre = ".$_POST['Semestre']." AND grupo = ".$_POST['Grupo']." AND turno = ".$_POST['Turno']." AND especialidad =".$_POST['Especialidad']."";
Porque eso sólo contiene una sentencia SQL, pero no veo en ninguna parte que la mandes a MySQL, y que luego verifiques si se obtuvo algún dato, además de tomar el dato que buscaste...

Cargar una sentencia en SQL en una variable de PHP no hace que se ejecute en MySQL...
Oye, tranquilo viejo, ya lo arreglo...
  #6 (permalink)  
Antiguo 03/01/2015, 20:53
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: Enviar correos usando PHPmailer a correos de una base de datos

Ok, hice esto para la consulta...

Código PHP:
mysql_select_db($database_Cetis$Cetis);
mysql_query("SET NAMES 'utf8'");
$query_correo "SELECT correo_al FROM alumnos WHERE semestre = '".$_POST['Semestre']."' AND grupo = '".$_POST['Grupo']."' AND turno = '".$_POST['Turno']."' AND especialidad ='".$_POST['Especialidad']."'";
$correo mysql_query($query_correo$Cetis) or die(mysql_error());
$row_correo mysql_fetch_assoc($correo);
$totalRows_correo mysql_num_rows($correo); 
¿Qué tal?

Etiquetas: notificaciones, phpmailer, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:09.