Foros del Web » Programando para Internet » PHP »

Envio de mail

Estas en el tema de Envio de mail en el foro de PHP en Foros del Web. Buenas, quiero enviar un archivo html a todos los usuarios registrados en una bd. tengo lo siguiente <? //cabeceras para el envio del mail en ...
  #1 (permalink)  
Antiguo 16/03/2004, 07:20
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Envio de mail

Buenas, quiero enviar un archivo html a todos los usuarios registrados en una bd. tengo lo siguiente

<?
//cabeceras para el envio del mail en html y dire de quien lo envia
$headers = "MIME-Version: 1.0\r\n";
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: [email protected]\r\n";

$tema=$HTTP_POST_VARS ["tema"];

function mostrar_html($tema, $variables)
{
extract($variables);
ob_start();
include ("$tema");
$temp=ob_get_contents();
ob_end_clean();
return $temp;
}

$asunto="Pruebas boletin noticias";

$conecto = mysql_connect("localhost","user","pass");
mysql_select_db("usuarios",$conecto);

$result=mysql_query("SELECT * FROM usuarios ") or die (mysql_error());

while ($query=mysql_fetch_array($result)){

$html_personalizado= mostrar_html($tema, $query);

if(!mail($query['email'], $asunto, $html_personalizado,$headers))
echo "no se ha podido enviar este ".$query['email'];
else mail($asunto,$html_personalizado,$headers);
echo "El mail enviado correctamente" .$query['nombre'];
}//fin while

?>

tengo un form que envia el nombre del archivo html (tema), y luego quiero que se me envie a todas las direcciones de mi bd. antes me salia, pero ahora he querido tener como un report, para saber las direcciones que estan bien o mal. pero no me envia nada, donde esta el error?

salu2
  #2 (permalink)  
Antiguo 16/03/2004, 07:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
PHP no es como "javascript" .. sule requerir de más "tag's" de apertura y cierre de {} .. Así que .. mejor usalos (aunque si sólo ejecutas una instrucción no deria dar problemas) .. lo mismo con los ;

Luego .. envias un mail al e-mail que indicas en tu campo email que obtienes con tu $query['email'] ... pero en el "else" del if tienes otro mail()? que no defines bien los parámetros .. Si eso lo quieres usar para enviar un mail a un "administrador" si falla el envio de algún e-mail a tus usuarios .. usa correctamente la función mail() (como el otro que usas) y .. ademas: ¿que pasaría si ese mail tampoco se puede enviar? .. Tendrías que hacerte otro "if()" para ese e-mail .. Yo te recomendaría crear un LOG de errores en un simple archivo de texto plano (o a tu BD) para que lo revises al finalizar tu envio de e-mails .. en lugar de enviar más e-mails ...

Código PHP:
if(!mail($query['email'], $asunto$html_personalizado,$headers)){
echo 
"no se ha podido enviar este ".$query['email'];
} else {

// mail($asunto,$html_personalizado,$headers); // en tal caso debería ir bajo el if() no en este else ...

 
echo "El mail enviado correctamente" .$query['nombre'];

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 16/03/2004 a las 07:38
  #3 (permalink)  
Antiguo 16/03/2004, 09:22
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias cluster, pero me he perdido... no entiendo lo del log de errores, y me interesaria que me llegara un mail al admin isttador con los mail que no hayn podido enviarse. la intencion es que esta aplicación envie un archivo a todos los mails de la bd, pero puede ser que alguno de esos mails no esten correctos...

a ver si puedes ayudarme un pelin mas, salu2
  #4 (permalink)  
Antiguo 16/03/2004, 10:19
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Cluster, he puesto el mail despues del if, y sigue sin enviarme el mail. como tengo q hacerlo para q me lo envie?? me muestra el echo de enviado, pero no lo envia.

como hay q hacer lo del log de errores para poder enviar los mails enviados incorrectamente a una direccion de mail?

salu2
  #5 (permalink)  
Antiguo 16/03/2004, 11:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. mail() con un simple e-mail te funciona? .. (envia el e-mail)

Para hacer el log de errores y mandarlo a un e-mail .. tendrías que ir acomulando en una variable los e-mails que no se envien (en el else de ese if) ... fuera de tu bucle que uses para obtener el campo "email" de tu tabla y realizar el envio .. ahí es donde debes componer tu mail() para el "administrador" si hay algún dato en tu variable que va a acomular los e-mails que falle...

El log puedes hacer algo tipo:

$mails_fallo .= $query['email'].'<br>';

Así acomularías en $mails_fallo los e-mails que falle el envio; usalo como "body" (cuerpo, mensaje) de tu e-mail (puse el salto de línea HTML suponiendo que vas a enviar el e-mail en HTML sino usa el \n si lo envias como texto plano ..)


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 16/03/2004, 11:53
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias Cluster por responder..

la funcion mail me funciona si lo hago por separado, lo que no me funciona es mi script. otro compañero del foro me ayudo a modificar mi script, y incluimos enviar un html. yo he añadido el hecho de enviar a los mail de una bd, y eso es lo q no me funciona. primero, que tengo mal del codigo que he puesto para q no me envie el mail¿

por otra parte, perdoname, pero hago 4 cosillas en php, no soy muy experto 'todavia' jajaja. gracias a vosotros cada dia se un poquillo más. como tendria que modificar mi script, para saber cuales son los mails incorrectos??

a ver si puedes ayudarme a solucionar mi problema, salu2 y gracias!!
  #7 (permalink)  
Antiguo 16/03/2004, 14:54
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Cluster, a ver si puedes echarme una mano, estoy desesperado. no consigo que funcione el script!!

ayuda por favor!!

salu2
  #8 (permalink)  
Antiguo 16/03/2004, 15:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Empieza por ver si tus consultas SQL usadas y las funciones que aplicas por el camino se están formando correctamente, si tu bucle (while) hace tantas iteracciones como registros de de tu consulta deben ser obtenidos ..

Por lo menos vas viendo así por donde tienes los problemas y de ahí podrémos ir dandole solución.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 17/03/2004, 04:19
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
NO HAY MANERA!! mensaje para cluster o quien pueda ayudarme...

buenos dias, despues de una larga noche sigo sin resultados. he probado lo siguiente:

<?
//cabeceras para el envio del mail en html y dire de quien lo envia
$headers = "MIME-Version: 1.0\r\n";
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: [email protected]\r\n";

include("conexion.php");
$query = mysql_query ("SELECT * FROM usuarios");

$dato=mysql_fetch_array($query);
$email=$dato["mail"];
$password=$dato["password"];
$asunto = "Tus datos de acceso a compresoresusados.com";
$para="$email";
$mensaje ="su password es <b>$password</b>. Gracias por registrarse con nosotros";
$mail = mail($para,$asunto,$mensaje,$headers);
?>


este codigo me lo envia, lo que no consigo hacer loo que pretendo. a ver si me ayudas a encontrar el fallo del primer script, en el cual intento enviar un archivo html a todos los mails de mi bd.

no soy capaz de dar con el fallo

salu2
  #10 (permalink)  
Antiguo 17/03/2004, 05:01
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 8 meses
Puntos: 1
mira, siempre aconsejo lo mismo, olvidate de la funcion mail y utiliza la clase phpmailler

http://www.programacion.com/php/articulo/phpmailer/

vers que evitas todos los problemas de los headers

salduos
  #11 (permalink)  
Antiguo 17/03/2004, 09:26
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias Jordi1 por tu ayuda, pero me es más complejo ponerme a mirar la clase phpmailer.

sigo sin poder hacer funcionar mi script, alguien que se preste a echarme una mano, por favor??

salu2!!!!!
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 11:36.