Ver Mensaje Individual
  #19 (permalink)  
Antiguo 23/03/2014, 06:16
raulgranadosraul
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Como enviar BCC a todos los contactos de mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Bueno, tienes un par de errores conceptuales, pero nada que no se pueda solucionar rápidamente.
En primer lugar, mysql_fetch_asoc() no recupera el resultado completo, sino sólo una fila, y lo que haces es crear un array de una única entrada. Por consecuencia estás recorriendo algo que no se recorre, sencillamente.

En segundo lugar, debes siempre verificar que la consulta devuelva efectivamente algo, aunque sea nada más que por cuestiones preventivas.
Finalmente, lo que recorres con el foreach es el mismo resource devuelto por la query. No necesitas otra cosa, no lo compliques.

Código PHP:
Ver original
  1. <?php
  2.  
  3. mysql_select_db($database_db, $db);
  4. $query_Clientes = "SELECT txtEmail FROM Publicidad_tbl ORDER BY Publicidad_tbl.idNombre";
  5. $Clientes = mysql_query($query_Clientes, $db) or die(mysql_error());
  6. if (mysql_num_rows($Clientes) > 0) {
  7.     $totalRows_Clientes = mysql_num_rows($Clientes);
  8.     $email = "[email protected]";
  9.  
  10.     $asunto = $titulo;
  11.     $html = "aquí va el contenido";
  12.  
  13.     $cabeceras = 'MIME-Version: 1.0' . "\r\n";
  14.     $cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  15.     $cabeceras .= 'To: $email' . "\r\n";
  16.     $cabeceras .= 'From: $email ' . "\n";
  17.     $cabeceras .= 'Bcc:';
  18.     foreach ($Clientes as $mails) {
  19.         $cabeceras .= $mails['txtEmail'].",";
  20.     }
  21.     $cabeceras .= "\r\n";
  22.     $cabeceras .= 'X-Mailer: PHP/' . phpversion();
  23.     var_dump($cabeceras);
  24.     var_dump($Clientes);
  25.     if (mail($email, $asunto, $html, $cabeceras)) {
  26.         echo '<script language="JavaScript" type="text/javascript">
  27. //<![CDATA[
  28. alert("Mensaje enviado!");
  29. //]]>
  30. </script>
  31. <SCRIPT LANGUAGE=javascript>
  32.   window.history.go(-1)
  33. </SCRIPT>
  34. ';
  35.     } else {
  36.         echo 'Error!';
  37.     }
  38.  
  39.     mysql_free_result($Clientes);
  40. }
  41. ?>
Este es el código con los cambios que me indicaste. Ahora mismo no envía email ni me devuelve el dump. La pantalla simplemente se queda en blanco. La verdad es que llevo dándole vueltas una semana y no consigo hallar qué estoy haciendo mal.
Código PHP:
<?php
mysql_select_db
($database_db$db);
$query_Clientes "SELECT txtEmail FROM Publicidad_tbl ORDER BY Publicidad_tbl.idNombre";
$Clientes mysql_query($query_Clientes$db) or die(mysql_error());
if (
mysql_num_rows($Clientes) > 0) {
$totalRows_Clientes mysql_num_rows($Clientes);
$email '[email protected]';

    
$tituloutf8_decode($_POST['titulo']);
    
$mensaje nl2br(utf8_decode($_POST['mensaje']));
    
$nombre $row_Clientes['txtNombre'];
    
$apellidos $row_Clientes['txtApellidos'];
    
$email_clientes $row_Clientes['txtEmail'];
    
$imagen $_POST['imagen'];

$asunto $titulo;
$html "aquí va el contenido";

    
$cabeceras 'MIME-Version: 1.0' "\r\n";
    
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
    
$cabeceras .= 'To: $email' "\r\n";
    
$cabeceras .= 'From: $email ' "\n";
    
$cabeceras .= 'Bcc:';
    foreach (
$Clientes as $mails) {
        
$cabeceras .= $mails['txtEmail'].",";
    }
    
$cabeceras .= "\r\n";
    
$cabeceras .= 'X-Mailer: PHP/' phpversion();
    
var_dump($cabeceras);
    
var_dump($Clientes);
    if (
mail($email$asunto$html$cabeceras)) {
        echo 
'<script language="JavaScript" type="text/javascript">
//<![CDATA[
alert("Mensaje enviado!");
//]]>
</script>
<SCRIPT LANGUAGE=javascript>
   window.history.go(-1)
</SCRIPT>
'
;
    } else {
        echo 
'Error!';
    }

    
mysql_free_result($Clientes);
}
?>