Foros del Web » Programando para Internet » PHP »

Ayuda con envio mail desde base de datos

Estas en el tema de Ayuda con envio mail desde base de datos en el foro de PHP en Foros del Web. Que tal, necesito ayuda para enviar correos desde mi Base de datos, tengo el código siguiente (los correos mostrados son ejemplos, porque tengo valores de ...
  #1 (permalink)  
Antiguo 27/08/2009, 10:23
 
Fecha de Ingreso: julio-2008
Ubicación: Trujillo
Mensajes: 58
Antigüedad: 16 años, 4 meses
Puntos: 1
Exclamación Ayuda con envio mail desde base de datos

Que tal, necesito ayuda para enviar correos desde mi Base de datos, tengo el código siguiente (los correos mostrados son ejemplos, porque tengo valores de correos verdaderos) y me sale:

Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in C:\AppServ\www\prueba.php on line 39
Error al Enviar el Email

La línea 39 es donde está la función mail

Cuando hago un echo a los emails me muestra por ejemplo:

[email protected],[email protected],[email protected]


mi pregunta es porque me está saliendo ese error.

En el php.ini ya está establecido:
SMTP = localhost
smtp_port = 25

AGRADECERIA SU AYUDA EN ESTE TEMA GRACIAS. Estoy usando PHP 5 y MySQL
Código PHP:
$mi_conexion=mysql_connect('localhost','root','pwd') or die('No se puedo conectar con la base de datos!');
mysql_select_db('correos',$mi_conexion);

$query_Tabla "SELECT email FROM usuarios ORDER BY id ASC";
$Tabla mysql_query($query_Tabla$mi_conexion) or die(mysql_error());
 
$losemails="";
while (
$row_Tabla=mysql_fetch_assoc($Tabla)) {
$losemails.=($row_Tabla['email'].", ");
}

$largo=strlen($losemails);
if (
$largo>2)
{
//quitamos ultimos ", "
$losemails=substr($losemails,0,$largo-2);
}
else
{
echo 
"No hay destinatarios!";
die();
};

$asunto='Prueba de email desde PHP';
$mensaje='esta es una prueba';

$envia='Mi Nombre';
$remite='[email protected]';

$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: $envia <$remite>";
$headers .= "Reply-To: $remite\r\n";
$headers .= "Return-path: $remite\r\n";
$headers .= "Cc: $losemails\r\n";
$headers .= "Bcc: $losemails\r\n"

mail($losemails$asunto$mensaje,$headers) or die("Error al Enviar el Email");
echo 
"Mensaje Enviado con Éxito!"

mysql_free_result($Tabla);
mysql_close($mi_conexion); 
  #2 (permalink)  
Antiguo 27/08/2009, 10:48
(Desactivado)
 
Fecha de Ingreso: junio-2009
Mensajes: 256
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Ayuda con envio mail desde base de datos

hola. instalate el magic winmail. sirve tambien para cuando envias correos, lo muestre en el panel de correos. funcionara siempre y cuando funcione.

SMTP = localhost
smtp_port = 25

saludos.

Última edición por xfer2; 27/08/2009 a las 10:48 Razón: correcion
  #3 (permalink)  
Antiguo 27/08/2009, 11:02
 
Fecha de Ingreso: julio-2008
Ubicación: Trujillo
Mensajes: 58
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ayuda con envio mail desde base de datos

bueno lo que yo queria era saber como puedo hacerlo mediante codigo PHP, pues mi intencion es de enviar correos pero que se alojen defrente en la bandeja mas no correos spam que son los programas GroupMail, 1stMailer, Atomic Mail Sender, etc.

Agradezco tu apoyo pero quiero seguir con el cogido en php.
  #4 (permalink)  
Antiguo 27/08/2009, 11:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Ayuda con envio mail desde base de datos

Prueba poner un espacio en los mails para que quede mail1@host, mail2@host. Puedes optimizar un poco haciendo algo así:
Código PHP:
Ver original
  1. $losemails = array();
  2. while ($row_Tabla=mysql_fetch_assoc($Tabla)) {
  3. $losemails[] = $row_Tabla['email'];
  4. }
  5.  
  6. $losemails = implode( ', ', $losemails);
  7. if (count($losemails) == 0) {
  8. echo "No hay destinatarios!";
  9. die();
  10. };

Saludos.
  #5 (permalink)  
Antiguo 27/08/2009, 11:21
 
Fecha de Ingreso: julio-2008
Ubicación: Trujillo
Mensajes: 58
Antigüedad: 16 años, 4 meses
Puntos: 1
Gracias GatorV, intenté con el cógido q pusiste para hacerlo que se vea con epacios e incluso con comillas por siacaso, pero sigue saliendo ese error.

Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in C:\AppServ\www\prueba.php
Error al Enviar el Email

Ahora otra cosita, que significa cuando sale el siguiente error:

Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for [email protected] in C:\AppServ\www\prueba2.php on line 11

Ahora tiene algo que ver con que tengo instalado en esta PC el IIS aparte el Appserv (en puerto 8080) derepente ese sea el problema?

He probado deteniendo el IIS y sigue igual.

Bueno ahora ya no me sale el error de la primera vez, ahora me sale el siguiente error:

Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for [email protected] in C:\AppServ\www\prueba2.php on line 28

El código es el siguiente, donde la línea 28 es el mail().

Código PHP:
<?php

$mi_conexion
=mysql_connect('localhost','root','pwd') or die('No se puedo conectar con la base de datos!');
mysql_select_db('correos',$mi_conexion);

$query_Tabla "SELECT email FROM usuarios ORDER BY id DESC";
$Tabla mysql_query($query_Tabla$mi_conexion) or die(mysql_error());
 
   
$losemails = array();
   while (
$row_Tabla=mysql_fetch_assoc($Tabla)) {
   
$losemails[] = $row_Tabla['email'];
   }
   
   
$losemails implode', '$losemails);
   if (
count($losemails) == 0) {
   echo 
"No hay destinatarios!";
   die();
  };

$sfrom="[email protected]";
$ssubject="prueba de correo"//subject
$shtml="prueba de correo utilizando PHP"//mensaje
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
mail($losemails,$ssubject,$shtml,$sheader);
 
?>

Última edición por GatorV; 27/08/2009 a las 12:41
  #6 (permalink)  
Antiguo 27/08/2009, 12:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Ayuda con envio mail desde base de datos

Eso ya no es de tu script PHP, si no de tu server SMTP que no permite hacer el Relay de correos, necesitas configurarlo para que te permita hacerlo.

Saludos.
  #7 (permalink)  
Antiguo 28/08/2009, 15:49
 
Fecha de Ingreso: julio-2008
Ubicación: Trujillo
Mensajes: 58
Antigüedad: 16 años, 4 meses
Puntos: 1
Pregunta Respuesta: Ayuda con envio mail desde base de datos

Buenas gente, aca de nuevo preguntando unas cosillas jeje. Mi codigo php ya manda correos, utilizando el PostCast Server como servidor SMTP, ahora cuando ejecuto el php, sale: "mail enviado satisfactoriamente", osea ya envio el mail y en el postcast comienza a enviar, LOS CORREOS SE ENVIAN pero con un detalle, los manda a cada rato: si ejecuté el codigo una vez llega el correo 30 veces (por poner un numero). Quiero saber si es un problema de mi codigo o si es el PostCast el que manda asi, pregunto si es el codigo porque derepente lo manda por el WHILE, o no se.

O si es problema del PostCast Server, si es así que otro SMTP me recomiendan para usar y que los correos lleguen directamente a la bandeja de entrada

De repente eso no es tema de este foro pero agradecería cualquier ayuda. Gracias.

Acá pongo mi codigo:

Código PHP:
<?php

$mi_conexion
=mysql_connect('localhost','root','pwd') or die('No se puedo conectar con la base de datos!');
mysql_select_db('correos',$mi_conexion);

$query_Tabla "SELECT email FROM usuarios ORDER BY id ASC";
$Tabla mysql_query($query_Tabla$mi_conexion) or die(mysql_error());
 
   
$losemails = array();
   while (
$row_Tabla=mysql_fetch_assoc($Tabla)) {
   
$losemails[] = $row_Tabla['email'];
   }
   
   
$losemails implode', '$losemails);
   if (
count($losemails) == 0) {
   echo 
"No hay destinatarios!";
   die();
  };

$sfrom="[email protected]"//cuenta que envia
$ssubject="prueba de correo"//subject
$shtml="prueba de correo utilizando PHP"//mensaje
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
mail($losemails,$ssubject,$shtml,$sheader) or die("Error al Enviar el Email");
echo 
"mail enviado satisfactoriamente";
 
?>
Saludos.
  #8 (permalink)  
Antiguo 28/08/2009, 15:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Ayuda con envio mail desde base de datos

Pues viendo el código no hay problema desde el lado de PHP, solo se hace el envío una vez, debes de en ese caso verificar con el Postcast server para ver porque esta haciendo tantos envios.

Saludos.
  #9 (permalink)  
Antiguo 28/08/2009, 15:58
 
Fecha de Ingreso: julio-2008
Ubicación: Trujillo
Mensajes: 58
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ayuda con envio mail desde base de datos

Gracias, entonces el código está bien. Ahora si quiero que los mails lleguen a la bandeja de entrada es cosa de código o también de un servidor smtp, de eso no tengo mucho conocimiento, agradecería cualquier ayuda. Si no es cosa de php, diganme donde puedo verificar eso.

Muchas Gracias
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:14.