Ver Mensaje Individual
  #22 (permalink)  
Antiguo 23/03/2014, 08:28
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Como enviar BCC a todos los contactos de mysql

Cita:
No encuentro el error por más vueltas que le dé, he hecho mil cambios y no consigo que ande.
Yo en ningún momento te he dicho que hagas "cambios". Te he dicho que pruebes parte a parte. Eso se hace simplemente separando cada bloque de ejecución en diferentes scripts y probando que corra sin errores.

Vamos a ver si se entiende: Primero prueba eliminando todo el envío y veamos:
Código PHP:
Ver original
  1. <?php
  2. mysql_select_db($database_db, $db);
  3. $query_Clientes = "SELECT txtEmail FROM Publicidad_tbl ORDER BY Publicidad_tbl.idNombre";
  4. $Clientes = mysql_query($query_Clientes, $db) or die(mysql_error());
  5. if (mysql_num_rows($Clientes) > 0) {
  6.     var_dump($Clientes);
  7. }
  8. else
  9.     {echo "La consulta no devolvió datos.";}
  10.     mysql_free_result($Clientes);
  11. ?>
Con eso verificas si efectivamente devuelve los datos esperados, o retorna vacía.

Una vez que eso se prueba, le agregas la siguiente fase, verificando cómo toma los datos de la tabla:

Código PHP:
Ver original
  1. <?php
  2. mysql_select_db($database_db, $db);
  3. $query_Clientes = "SELECT txtEmail FROM Publicidad_tbl ORDER BY Publicidad_tbl.idNombre";
  4. $Clientes = mysql_query($query_Clientes, $db) or die(mysql_error());
  5. if (mysql_num_rows($Clientes) > 0) {
  6.     $email = '[email protected]';
  7.     $titulo= utf8_decode($_POST['titulo']);
  8.     $mensaje = nl2br(utf8_decode($_POST['mensaje']));
  9.     $imagen = $_POST['imagen'];
  10.     $html = "aquí va el contenido";
  11.  
  12.     $cabeceras = 'MIME-Version: 1.0' . "\r\n";
  13.     $cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  14.     $cabeceras .= 'To: $email' . "\r\n";
  15.     $cabeceras .= 'From: $email ' . "\n";
  16.     $cabeceras .= 'Bcc:';
  17.     foreach ($Clientes as $mails) {
  18.         $cabeceras .= $mails['txtEmail'].",";
  19.     }
  20.     $cabeceras .= "\r\n";
  21.     $cabeceras .= 'X-Mailer: PHP/' . phpversion();
  22.     var_dump($cabeceras);
  23.     var_dump($Clientes);
  24.     var_dump($email );
  25.     var_dump($titulo);
  26.     var_dump($mensaje );
  27.     var_dump($html );
  28.  
  29. }
  30. mysql_free_result($Clientes);
  31. ?>

Recién en ese punto se puede hacer una prueba más integral. Y aclaro que en este lugar estoy sacando basura que estás poniendo sin ningún sentido, y cambiando cosas mal colocadas:

Código PHP:
Ver original
  1. <?php
  2. // Por cierto, aquí no está la conexión, por lo que quiero suponer
  3. // que este codigo no está completo...
  4. mysql_select_db($database_db, $db);
  5. $query_Clientes = "SELECT txtEmail FROM Publicidad_tbl ORDER BY Publicidad_tbl.idNombre";
  6. $Clientes = mysql_query($query_Clientes, $db) or die(mysql_error());
  7.  
  8. if (mysql_num_rows($Clientes) > 0) {
  9.     // esto no tiene ningún uso. No tengo idea de para qué lo pones.
  10.     // $totalRows_Clientes = mysql_num_rows($Clientes);
  11.     $email = '[email protected]';
  12.  
  13.     $titulo= utf8_decode($_POST['titulo']);
  14.     $mensaje = nl2br(utf8_decode($_POST['mensaje']));ç
  15.  
  16.     // Estos datos no existen en este punto. Es simple basura en el código.
  17.     // $nombre = $row_Clientes['txtNombre'];
  18.     // $apellidos = $row_Clientes['txtApellidos'];
  19.     // $email_clientes = $row_Clientes['txtEmail'];
  20.  
  21.     $imagen = $_POST['imagen'];
  22.  
  23.     // Esto es redundante. Carece de utilidad.
  24.     //$asunto = $titulo;
  25.  
  26.     // Voy a suponer que es una prueba...
  27.     $html = "aquí va el contenido";
  28.  
  29.     $cabeceras = 'MIME-Version: 1.0' . "\r\n";
  30.     $cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  31.     $cabeceras .= 'To: $email' . "\r\n";
  32.     $cabeceras .= 'From: $email ' . "\n";
  33.     $cabeceras .= 'Bcc:';
  34.     foreach ($Clientes as $mails) {
  35.         $cabeceras .= $mails['txtEmail'].",";
  36.     }
  37.     $cabeceras .= "\r\n";
  38.     $cabeceras .= 'X-Mailer: PHP/' . phpversion();
  39.     var_dump($Clientes);
  40.     var_dump($cabeceras);
  41.     if (mail($email, $titulo, $html, $cabeceras)) {
  42.         echo "E-mail enviado exitosamente";
  43.         // Vamos a cancelar todo lo siguiente hasta que se haga la prueba completa.
  44. //        echo '<script language="JavaScript" type="text/javascript">
  45. //<![CDATA[
  46. //alert("Mensaje enviado!");
  47. //]]>
  48. //</script>
  49. //<SCRIPT LANGUAGE=javascript>
  50. //   window.history.go(-1)
  51. //</SCRIPT>
  52. //';
  53.     } else {
  54.         echo 'Error!';
  55.     }
  56.  
  57. }
  58. // Esto estaba mal colocado.
  59. mysql_free_result($Clientes);
  60.  
  61. ?>

¿Se va entendiendo cómo se debuggea?
La cosa no pasa por "cambiar" el código, sino simplemente verificarlo, que no es lo mismo.

Ignoraré el resto de los comentarios. No vienen al caso y no aportan nada. Sólo demuestran falta de tolerancia, y que no has tenido mínimamente en cuenta todo lo que he intentado para ayudarte. Que no fue poco.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)