Foros del Web » Programando para Internet » PHP »

Correo por PHP

Estas en el tema de Correo por PHP en el foro de PHP en Foros del Web. Hola, estoy trabajando en un proceso de envío de correo por php a una lista de usuarios en Mysql y no se como incluir estos. ...
  #1 (permalink)  
Antiguo 19/03/2010, 14:15
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Correo por PHP

Hola, estoy trabajando en un proceso de envío de correo por php a una lista de usuarios en Mysql y no se como incluir estos. He probado mediante un qry pero me da error. Creo que es porque no digo lo que es $qry[email] pero no se como traerlo. Alguien me puede hechar una mano?

Código PHP:
<?php
include "sistema/config.php"

mysql_connect($server$db_user$db_pass) or die (mysql_error()); 
$result mysql_db_query($database"select * from $table order by username asc") or die (mysql_error()); 

if (
mysql_num_rows($result)) { 
   echo 
"<font size=3 color=#FFFFFF>Tratando de enviar el mensaje...<br><br>"
   while (
$qry mysql_fetch_array($result)); {
     echo 
"$qry[email];<br>";
     }
}
require_once(
'class.phpmailer.php');

$mail             = new PHPMailer(); // defaults to using php "mail()"

$body             file_get_contents('contents.html');
$body             eregi_replace("[\]",'',$body);

$mail->AddReplyTo("[email protected]","Storm of Sighs");

$mail->SetFrom('[email protected]''Storm of Sighs');

$mail->AddReplyTo("[email protected]","Storm of Sighs");

$address "$email";
$mail->AddAddress($address"Storm of Sighs");

$mail->Subject    "Ignorad este correo";

$mail->AltBody    "To view the message, please use an HTML compatible email viewer!"// optional, comment out and test

$mail->MsgHTML($body);

$mail->AddAttachment("objetos/firma.jpg");      // attachment

if(!$mail->Send()) {
  echo 
"Mailer Error: " $mail->ErrorInfo;
} else {
  echo 
"Message sent!";
}

?>
__________________
Diseño portadas para discos, interesados contactad conmigo.
  #2 (permalink)  
Antiguo 19/03/2010, 15:58
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: Correo por PHP

No se supone que el num_rows te devuelve un numero? En tu condicion lo estas usando como boolean :S

Código PHP:
if (mysql_num_rows($result)) { 
Proba con

Código PHP:
if (mysql_num_rows($result) > 0) { 
O algo asi a ver que pasa..
  #3 (permalink)  
Antiguo 19/03/2010, 16:08
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 8 meses
Puntos: 77
Respuesta: Correo por PHP

Cita:
Iniciado por Megcapkill Ver Mensaje
No se supone que el num_rows te devuelve un numero? En tu condicion lo estas usando como boolean :S

Código PHP:
if (mysql_num_rows($result)) { 
Proba con

Código PHP:
if (mysql_num_rows($result) > 0) { 
O algo asi a ver que pasa..
Nah, no es necesario, si es distinto de 0, se evalua como true


No entiendo bien el problema.. dices que te da error (el codigo tal como lo posteaste?), que error te marca?
  #4 (permalink)  
Antiguo 19/03/2010, 16:21
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Respuesta: Correo por PHP

Lo que me pone es:

Tratando de enviar el mensaje...

;

Invalid address: You must provide at least one recipient email address. Mailer Error: You must provide at least one recipient email address.

Probé a cambiar eso y sigue igual
__________________
Diseño portadas para discos, interesados contactad conmigo.
  #5 (permalink)  
Antiguo 19/03/2010, 16:23
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: Correo por PHP

Emm Ok.. no sabia eso.. de todos modos fijate aca

Código PHP:
if (mysql_num_rows($result)) {  
   echo 
"<font size=3 color=#FFFFFF>Tratando de enviar el mensaje...<br><br>";  
   while (
$qry mysql_fetch_array($result)); { 
     echo 
"$qry[email];<br>"
     } 

Creo que te han faltado unas comillas simples en el qry.. a ver asi..

Código PHP:
if (mysql_num_rows($result)) {  
   echo 
"<font size=3 color=#FFFFFF>Tratando de enviar el mensaje...<br><br>";  
   while (
$qry mysql_fetch_array($result)); { 
     echo 
"$qry['email'];<br>"
     } 

  #6 (permalink)  
Antiguo 19/03/2010, 17:12
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Respuesta: Correo por PHP

Poniendo las comillas me da error php, creo que no debe ser eso
__________________
Diseño portadas para discos, interesados contactad conmigo.
  #7 (permalink)  
Antiguo 19/03/2010, 17:15
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: Correo por PHP

Probalo asi:

Código PHP:
   while ($qry mysql_fetch_array($result)); { 
     
$imprime $qry["email"];
     echo 
$imprime;
     echo 
"<br>";
     } 
Otra cosa.. yo usualmente uso la funcion mysql_fetch_assoc.. supongo que sera lo mismo, pero esto ultimoq ue te puse arriba funciona bien para la que yo uso.. no probe la tuya :P

Contame como te fue xD
  #8 (permalink)  
Antiguo 19/03/2010, 17:25
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Respuesta: Correo por PHP

Esa debería funcionar bien, pero estoy seguro de que el problema es que no especifiqué en el código lo que era email, entonces por eso cuando pongo echo "$qry[email]" o echo "$email" y no me aparece nada. Como podría hacer para deir qué es?
__________________
Diseño portadas para discos, interesados contactad conmigo.
  #9 (permalink)  
Antiguo 19/03/2010, 17:25
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 8 meses
Puntos: 77
Respuesta: Correo por PHP

Estas agregandole a los destinatarios el contenido de $address, antes eso, asignas a $address el contenido de $email, antes de eso, nunca asignas valor a a $email
  #10 (permalink)  
Antiguo 19/03/2010, 18:40
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Respuesta: Correo por PHP

lo se, lo que no se es como dárselo
__________________
Diseño portadas para discos, interesados contactad conmigo.
  #11 (permalink)  
Antiguo 20/03/2010, 11:56
 
Fecha de Ingreso: marzo-2010
Ubicación: Callao - Peru
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Correo por PHP

Suponiendo que las varibles $server, $db_user, $db_pass y sobre todo $table estan en tu archivo "sistema/config.php"

intenta esto

Código PHP:
mysql_connect($server$db_user$db_pass) or die (mysql_error());  
$result mysql_query("select * from $table order by username asc") or die (mysql_error());  

if (
$result) {  
   echo 
"<font size=3 color=#FFFFFF>Tratando de enviar el mensaje...<br><br>";  
     while (
$qry mysql_fetch_array($result)){ 
         
$lista_mail[]=$qry['mail']; // array que contiene todos los emails recuperados por tu query
         
echo $qry['email']."<br>"
     } 


Luego esto :
Código PHP:
$address implode(',',$lista_mail); // lista de emails separado por comas 
En vez de esto :
Código PHP:
$address "$email"
Saludos !!
  #12 (permalink)  
Antiguo 20/03/2010, 12:41
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: Correo por PHP

Yo creia que "email" era un campo que traias en el query cuando hacias select *.. :S
Cualquiera de las opciones que hemos dado te tienen que andar.. cualquier cosa contanos :P
  #13 (permalink)  
Antiguo 20/03/2010, 14:42
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Respuesta: Correo por PHP

Lo he probado, el error que me da ahora es que no da seleccionado la database, cosa que me extraña porque en el archivo que incluyo lo doy todo
__________________
Diseño portadas para discos, interesados contactad conmigo.
  #14 (permalink)  
Antiguo 20/03/2010, 15:39
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: Correo por PHP

Proba usando esta linea

Código PHP:
mysql_select_db($database) or die ('No se puede conectar a la base de datos.'); 
En lugar de hacer el query pasandole el $database como parametro..

Y luego si haces

Código PHP:
mysql_query("select * from $table order by username asc") or die (); 
  #15 (permalink)  
Antiguo 20/03/2010, 16:08
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Respuesta: Correo por PHP

Nada, no funciona... probé añadiendo también simplemente mysql_select_db($database) pero nada
__________________
Diseño portadas para discos, interesados contactad conmigo.
  #16 (permalink)  
Antiguo 20/03/2010, 16:22
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: Correo por PHP

ponele
Código PHP:
mysql_select_db($database) or die (mysql_error()); 
y decime cual es el error que te esta tirando la seleccion..

La conexion al servidor no da error?

Estoy suponiendo siempre que ya controlaste todos los datos del config.php y estas 100% seguro de que son los que realmente necesitas.. no? xD
  #17 (permalink)  
Antiguo 22/03/2010, 09:25
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Respuesta: Correo por PHP

si, si, estoy seguro... el error que me da es: 'No database selected', y he tenido en cuenta que a la database le llamo $table y sigue fallando...
__________________
Diseño portadas para discos, interesados contactad conmigo.
  #18 (permalink)  
Antiguo 22/03/2010, 14:40
 
Fecha de Ingreso: marzo-2010
Ubicación: Callao - Peru
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Correo por PHP

Mmmm ... que tienes exactamente en tu archivo "sistema/config.php" ... yo creo que tienes constantes.
Ejemplo:
Código PHP:
define("db","basedatos"
De ser asi entonces:

Código PHP:
mysql_connect(serverdb_userdb_pass) or die (mysql_error());   
$result mysql_query("select * from ".table." order by username asc") or die (mysql_error()); 
Ojo sin el signo "$" ya que no son variables sino constantes.


Saludos!!
  #19 (permalink)  
Antiguo 23/03/2010, 10:05
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Respuesta: Correo por PHP

Ya corregi el problema en parte, el fallo estaba en el traspaso de variables. Probando los códigos que me dijisteis me quedó algo así:

Código PHP:
include "config.php"

mysql_connect($server$db_user$db_pass) or die (mysql_error());   
mysql_select_db($database) or die (mysql_error());  
$result mysql_query("select * from $table order by username asc") or die (mysql_error());


if (
$result) {  
   echo 
"<font size=3 color=#FFFFFF>Tratando de enviar el mensaje...<br><br>";  
     while (
$qry mysql_fetch_array($result)){ 
         
$lista_mail[]=$qry['email']; // array que contiene todos los emails recuperados por tu query
         
echo $qry['email']."<br>"
     } 
}  
require_once(
'class.phpmailer.php');

$mail             = new PHPMailer(); // defaults to using php "mail()"

$body             file_get_contents('contents.html');
$body             eregi_replace("[\]",'',$body);

$mail->AddReplyTo("[email protected]","Storm of Sighs");

$mail->SetFrom('[email protected]''Storm of Sighs');

$mail->AddReplyTo("[email protected]","Storm of Sighs");
  
$address implode(',',$lista_mail); // lista de emails separado por comas  
$mail->AddAddress($address"Storm of Sighs"); 
Y el error que me dice es 'You must provide at least one recipient email address. Mailer Error: You must provide at least one recipient email address.'
__________________
Diseño portadas para discos, interesados contactad conmigo.
  #20 (permalink)  
Antiguo 23/03/2010, 16:08
 
Fecha de Ingreso: marzo-2010
Ubicación: Callao - Peru
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Correo por PHP

Traduciendo el Error: Usted debe proporcionar al menos una dirección de correo electrónico del destinatario ... ... eso es porque al parecer no esta recuperando los emails.

Has verificado que se esten mostrando los correos ?

O Intenta esto
Código PHP:
$address implode(';',$lista_mail);  // separados por punto y coma
// En ves de esto:
$address implode(',',$lista_mail); 
Luego me dices que tal te fue


Saludos !!!
  #21 (permalink)  
Antiguo 23/03/2010, 17:38
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Respuesta: Correo por PHP

Pues las direcciones me las trae, porque mediante el echo me aparecen todas perfectamente, pero ni poniendo ';' donde me dijiste se corrije el error...
__________________
Diseño portadas para discos, interesados contactad conmigo.
  #22 (permalink)  
Antiguo 23/03/2010, 17:53
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: Correo por PHP

Intentemos esto

En lugar de poner esto aca..

Código PHP:
if ($result) {   
   echo 
"<font size=3 color=#FFFFFF>Tratando de enviar el mensaje...<br><br>";   
     while (
$qry mysql_fetch_array($result)){  
         
$lista_mail[]=$qry['email']; // array que contiene todos los emails recuperados por tu query 
         
echo $qry['email']."<br>";  
     }  

Proba con esto

Código PHP:
if ($result) {   
   echo 
"<font size=3 color=#FFFFFF>Tratando de enviar el mensaje...<br><br>";   
     
$qry mysql_fetch_array($result); // Una lectura anticipada para evitar problemas con los separadores..
     
lista_mail=$qry['email'];
     while (
$qry mysql_fetch_array($result)){  
         
$lista_mail.=",";
         
$lista_mail.=$qry['email']; // array que contiene todos los emails recuperados por tu query 
         
echo $qry['email']."<br>";  
     }  
}
echo 
$lista_mail
Probalo y decime como te fue :D

Suerte!!
  #23 (permalink)  
Antiguo 24/03/2010, 12:17
Avatar de breakervans  
Fecha de Ingreso: noviembre-2009
Ubicación: Vigo, España
Mensajes: 133
Antigüedad: 15 años
Puntos: 1
Respuesta: Correo por PHP

No entiendo por qué, pero este me da error php... he probado a quitarle la comillas a $qry['email']; ya que sino no funciona, $qry[email]; y nada...
__________________
Diseño portadas para discos, interesados contactad conmigo.

Etiquetas: correo
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 22:30.