Foros del Web » Programando para Internet » PHP »

problema al envio de email en base de datos

Estas en el tema de problema al envio de email en base de datos en el foro de PHP en Foros del Web. Hola: Quiero enviar a cada usuario de mi base de datos un correo pero al enviarlo le llega a cada usuario de la tabla todos ...
  #1 (permalink)  
Antiguo 09/12/2017, 13:12
 
Fecha de Ingreso: septiembre-2003
Mensajes: 180
Antigüedad: 20 años, 6 meses
Puntos: 1
problema al envio de email en base de datos

Hola:
Quiero enviar a cada usuario de mi base de datos un correo pero al enviarlo le llega a cada usuario de la tabla todos los correos .
El script es el que sigue:

Código PHP:
Ver original
  1. <?php                          
  2. function conectar()
  3. {
  4. $base_de_datos = "base de datos";
  5. $db_usuario = "usuario";
  6. $db_password = "passwoed";
  7.  
  8. if (!($link = mysql_connect("localhost", $db_usuario, $db_password)))
  9. {
  10. echo "Error conectando a la base de datos.";
  11. exit();
  12. }
  13. if (!mysql_select_db($base_de_datos, $link))
  14. {
  15. echo "Error seleccionando la base de datos.";
  16. exit();
  17. }
  18. return $link;
  19. }
  20. $db = conectar();
  21.  
  22.  $resultados = mysql_query("SELECT *  FROM tabla ");
  23. while($row=mysql_fetch_array($resultados))  
  24. {
  25. $email = $row["email_propietario"];
  26. $propietario=$row["propietario"];
  27. $asunto = "Asunto";
  28.  
  29. $contenedor_mensaje1 .= "cuerpo del mensaje
  30.     </tr>
  31. </table>";
  32.  $contenedor_mensaje1 .= '</body>
  33. </html>';
  34.  $headers  = 'MIME-Version: 1.0' . "\r\n";
  35. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  36. $headers .= 'From: mi correo';
  37.      mail($email, $asunto, $contenedor_mensaje1, $headers);    
  38.                                                
  39. }                                                                        
  40. ?>
¿ Que hay mal hecho ?

Última edición por gnzsoloyo; 09/12/2017 a las 20:24 Razón: Pésimamente etiquetados
  #2 (permalink)  
Antiguo 09/12/2017, 15:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: problema al envio de email en base de datos

ese codigo va a enviar un correo a cada usuario que exista en la tabla, que es lo que quieres no?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 09/12/2017, 20:26
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: problema al envio de email en base de datos

OFF TOPIC en Base de Datos. Movido a PHP
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 09/12/2017, 21:31
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: problema al envio de email en base de datos

otro que sigue con mysql. Mano deberias ya de estas utilizando mysqli o pdo, averigua por que para evitarte problemas a futuro
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 11/12/2017, 09:16
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema al envio de email en base de datos

Eso sucede porque concatenas, y no borras el mensaje, entonces se va acumulando

al final del while pon:

$contenedor_mensaje1 = "";

Código PHP:
Ver original
  1. while($row=mysql_fetch_array($resultados))  
  2. {
  3. $email = $row["email_propietario"];
  4. $propietario=$row["propietario"];
  5. $asunto = "Asunto";
  6.  
  7. $contenedor_mensaje1 .= "cuerpo del mensaje
  8.    </tr>
  9. </table>";
  10.  $contenedor_mensaje1 .= '</body>
  11. </html>';
  12.  $headers  = 'MIME-Version: 1.0' . "\r\n";
  13. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  14. $headers .= 'From: mi correo';
  15.      mail($email, $asunto, $contenedor_mensaje1, $headers);    
  16. $contenedor_mensaje1 = "";
  17. }

Ahora como veo que concatenas directamente, y como ese mensaje html es raro, supongo que el mensaje tiene un valor inicial, por lo que tendrias que usar un auxiliar y en vez de borrar volver a su valor inicial con el auxiliar mismo:

Código PHP:
Ver original
  1. $aux = $contenedor_mensaje1;
  2. while($row=mysql_fetch_array($resultados))  
  3. {
  4. $email = $row["email_propietario"];
  5. $propietario=$row["propietario"];
  6. $asunto = "Asunto";
  7.  
  8. $contenedor_mensaje1 .= "cuerpo del mensaje
  9.    </tr>
  10. </table>";
  11.  $contenedor_mensaje1 .= '</body>
  12. </html>';
  13.  $headers  = 'MIME-Version: 1.0' . "\r\n";
  14. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  15. $headers .= 'From: mi correo';
  16.      mail($email, $asunto, $contenedor_mensaje1, $headers);    
  17. $contenedor_mensaje1 = $aux;
  18. }

Consideraciones, tanto los headers como el asunto son estáticos, sacalos del while, no sirven de nada ahí...


Código PHP:
Ver original
  1. $aux = $contenedor_mensaje1;
  2.  
  3. $headers  = 'MIME-Version: 1.0' . "\r\n";
  4. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  5. $headers .= 'From: mi correo';
  6. $asunto = "Asunto";
  7.  
  8. while($row=mysql_fetch_array($resultados))  
  9. {
  10. $email = $row["email_propietario"];
  11. $propietario=$row["propietario"];
  12.  
  13. $contenedor_mensaje1 .= "cuerpo del mensaje
  14.    </tr>
  15. </table>";
  16.  $contenedor_mensaje1 .= '</body>
  17. </html>';
  18.      mail($email, $asunto, $contenedor_mensaje1, $headers);    
  19. $contenedor_mensaje1 = $aux;
  20. }

Saludos

Etiquetas: bases-de-datos-general, email, mysql, tabla
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 13:21.