Foros del Web » Programando para Internet » PHP »

Como puedo combinar estos dos scripts

Estas en el tema de Como puedo combinar estos dos scripts en el foro de PHP en Foros del Web. Hola quiero saber como combinar estos dos scripts que encontré en el foro Este me manda un mail a todas las direcciones de mail de ...
  #1 (permalink)  
Antiguo 14/06/2009, 17:21
 
Fecha de Ingreso: abril-2009
Mensajes: 9
Antigüedad: 15 años, 7 meses
Puntos: 0
Como puedo combinar estos dos scripts

Hola quiero saber como combinar estos dos scripts que encontré en el foro
Este me manda un mail a todas las direcciones de mail de mi base de datos, lo he probado y funciona muy bien.

Código:
<?php

$conexion = mysql_connect("host","usu","pss");

if (!$conexion) {
echo "No pudo conectarse a la BD: " . mysql_error();
exit;
}

if (!mysql_select_db("base de datos",$conexion)) {
echo "No ha sido posible seleccionar la BD: " . mysql_error();
exit;
}

$sql = "SELECT * FROM users";

$resultado = mysql_query($sql);

if (!$resultado) {
echo "No pudo ejecutarse satisfactoriamente la consulta ($sql) " .
"en la BD: " . mysql_error();
exit;
}

if (mysql_num_rows($resultado) == 0) {
echo "No se han encontrado filas, nada a imprimir, asi que voy " .
"a detenerme.";
exit;
}

// Mientras exista una fila de datos, colocar esa fila en $fila
// como una matriz asociativa
// Nota: Si solo espera una fila, no hay necesidad de usar un ciclo
// Nota: Si coloca extract($fila); dentro del siguiente ciclo,
// estara creando $id_usuario, $nombre_completo, y $status_usuario

$cabeceras = 'MIME-Version: 1.0' . "\r\n";
$cabeceras .= 'Content-type: text/; charset=iso-8859-1' . "\r\n";

// Cabeceras adicionales
$cabeceras .= 'To: ' . "\r\n";
$cabeceras .= 'From: pelito. ' . "\r\n";
$cabeceras .= 'Cc: xxxx xxxxx' . "\r\n";
$cabeceras .= 'Bcc: xxxx xxxx' . "\r\n";

$mensaje = 'Hola';
$asunto = 'Aun no tiene su pagina web?';

while ($fila = mysql_fetch_assoc($resultado)) {

$nombre="name";
$emails="email";

// Enviarlo
mail($fila[$emails], $asunto, $mensaje, $cabeceras);

//$nombre="nom_sql";
//$emails="emails_sql";

echo $fila[$nombre];
echo '<br>';
echo $fila[$emails];
echo '<br>';
echo '<br>';
}

mysql_free_result($resultado);

?>
Este otro tiene la función class.phpmailer.php que funciona bien llegan los correos con formato html solo que tengo que mandar de a uno los correos.

Código:
<?
  // primero hay que incluir la clase phpmailer para poder instanciar
  //un objeto de la misma
  require "includes/class.phpmailer.php";

  //instanciamos un objeto de la clase phpmailer al que llamamos 
  //por ejemplo mail
  $mail = new phpmailer();

  //Definimos las propiedades y llamamos a los métodos 
  //correspondientes del objeto mail

  //Con PluginDir le indicamos a la clase phpmailer donde se 
  //encuentra la clase smtp que como he comentado al principio de 
  //este ejemplo va a estar en el subdirectorio includes
  $mail->PluginDir = "includes/";

  //Con la propiedad Mailer le indicamos que vamos a usar un 
  //servidor smtp
  $mail->Mailer = "smtp";

  //Asignamos a Host el nombre de nuestro servidor smtp
  $mail->Host = "smtp.xxxx.xxx";

  //Le indicamos que el servidor smtp requiere autenticación
  $mail->SMTPAuth = true;

  //Le decimos cual es nuestro nombre de usuario y password
  $mail->Username = "xxxx xxxx"; 
  $mail->Password = "xxxxx";

  //Indicamos cual es nuestra dirección de correo y el nombre que 
  //queremos que vea el usuario que lee nuestro correo
  $mail->From = "xxxxxx xxxxxx";
  $mail->FromName = "Eduardo Garcia";

  //el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar 
  //una cuenta gratuita, por tanto lo pongo a 30  
  $mail->Timeout=30;

  //Indicamos cual es la dirección de destino del correo
  $mail->AddAddress("xxxxx xxxxxx");

  //Asignamos asunto y cuerpo del mensaje
  //El cuerpo del mensaje lo ponemos en formato html, haciendo 
  //que se vea en negrita
  $mail->Subject = "Prueba de phpmailer";
  $mail->Body = "<b>Mensaje de prueba mandado con phpmailer en formato html</b>";

  //Definimos AltBody por si el destinatario del correo no admite email con formato html 
  $mail->AltBody = "Mensaje de prueba mandado con phpmailer en formato solo texto";

  //se envia el mensaje, si no ha habido problemas 
  //la variable $exito tendra el valor true
  $exito = $mail->Send();

  //Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho 
  //para intentar enviar el mensaje, cada intento se hara 5 segundos despues 
  //del anterior, para ello se usa la funcion sleep	
  $intentos=1; 
  while ((!$exito) && ($intentos < 5)) {
	sleep(5);
     	//echo $mail->ErrorInfo;
     	$exito = $mail->Send();
     	$intentos=$intentos+1;	
	
   }
 
		
   if(!$exito)
   {
	echo "Problemas enviando correo electrónico a ".$valor;
	echo "<br>".$mail->ErrorInfo;	
   }
   else
   {
	echo "Mensaje enviado correctamente";
   } 
?>
Lo que quiero si se puede es combinarlos, que mande a las direcciones de mail de mi base pero con la función class.phpmailer.php para que lleguen con formato html.

Lo que yo busco es orientación ya que estoy aprendiendo a usar php.
Gracias de ante mano…
  #2 (permalink)  
Antiguo 14/06/2009, 17:28
 
Fecha de Ingreso: abril-2009
Mensajes: 53
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Como puedo combinar estos dos scripts

Desde que empieza a definir la primer $cabeceras borra todo lo que sigue hasta llegar a:
mysql_free_result($resultado);

Es decir, desde
$cabeceras = 'MIME-Version: 1.0' . "\r\n"; hasta mysql_free_result($resultado);
borra todo y ahi pega el codigo de abajo, y listo, despues es cuestion de configurar phpmailer.
Osea estas cambiando solamente el metodo de envio de mails. Acordate que tenes q tener la clase phpmailer, fijate ahi en los articulos que estuviste leyendo que debe estar el link de descarga.
Saludos!
  #3 (permalink)  
Antiguo 15/06/2009, 07:07
 
Fecha de Ingreso: abril-2009
Mensajes: 9
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Como puedo combinar estos dos scripts

Código:
<?php

$conexion = mysql_connect("host","usu","pss");

if (!$conexion) {
echo "No pudo conectarse a la BD: " . mysql_error();
exit;
}

if (!mysql_select_db("base de datos",$conexion)) {
echo "No ha sido posible seleccionar la BD: " . mysql_error();
exit;
}

$sql = "SELECT * FROM users";

$resultado = mysql_query($sql);

if (!$resultado) {
echo "No pudo ejecutarse satisfactoriamente la consulta ($sql) " .
"en la BD: " . mysql_error();
exit;
}

if (mysql_num_rows($resultado) == 0) {
echo "No se han encontrado filas, nada a imprimir, asi que voy " .
"a detenerme.";
exit;
}

  require "includes/class.phpmailer.php";

  $mail = new phpmailer();

  $mail->PluginDir = "includes/";

  $mail->Mailer = "smtp";

  $mail->Host = "smtp.xxxx.xxx";

  $mail->SMTPAuth = true;

  $mail->Username = "xxxx xxxx"; 
  $mail->Password = "xxxxx";

  $mail->From = "xxxxxx xxxxxx";
  $mail->FromName = "Eduardo Garcia";


  $mail->Timeout=30;

  $mail->AddAddress("xxxxx xxxxxx");

  $mail->Subject = "Prueba de phpmailer";
  $mail->Body = "<b>Mensaje de prueba mandado con phpmailer en formato html</b>";

  $mail->AltBody = "Mensaje de prueba mandado con phpmailer en formato solo texto";

  $exito = $mail->Send();

  $intentos=1; 
  while ((!$exito) && ($intentos < 5)) {
	sleep(5);
     	$exito = $mail->Send();
     	$intentos=$intentos+1;	
	
   }
 
		
   if(!$exito)
   {
	echo "Problemas enviando correo electrónico a ".$valor;
	echo "<br>".$mail->ErrorInfo;	
   }
   else
   {
	echo "Mensaje enviado correctamente";
	 } 
?>
Hola así quedaría el código? Ya lo probé y funciona, solo que me manda un solo mail y no a todos los de mi base de datos… que debo hacer..
  #4 (permalink)  
Antiguo 15/06/2009, 08:26
 
Fecha de Ingreso: abril-2009
Mensajes: 53
Antigüedad: 15 años, 6 meses
Puntos: 1
Información Respuesta: Como puedo combinar estos dos scripts

Claro esta bien, lo que pasa es que ahora hay que ir agregando una por una las direcciones, digamos para cada direccion tenes q hacer
$mail->AddAddress("[email protected]");

fijate que vos recuperas toda la lista de esta manera:
$sql = "SELECT * FROM users";
$resultado = mysql_query($sql);

ahora en $resultado tenes los registros insertados en la tabla users, lo que podes hacer es recorrer la tabla uno por uno e ir agregando los mails con AddAdress.
Seria algo asi, supongamos que en la tabla "users" el campo donde almacenamos el email se llama "email"

while ($reg=mysql_fetch_array($resultado))
{
$nuevomail = $reg['email'];
$mail->AddAddress($nuevomail);
}

En fin quedaria algo asi:
Código PHP:
<?php

$conexion 
mysql_connect("host","usu","pss");

if (!
$conexion) {
echo 
"No pudo conectarse a la BD: " mysql_error();
exit;
}

if (!
mysql_select_db("base de datos",$conexion)) {
echo 
"No ha sido posible seleccionar la BD: " mysql_error();
exit;
}

$sql "SELECT * FROM users";

$resultado mysql_query($sql);

if (!
$resultado) {
echo 
"No pudo ejecutarse satisfactoriamente la consulta ($sql) " .
"en la BD: " mysql_error();
exit;
}

if (
mysql_num_rows($resultado) == 0) {
echo 
"No se han encontrado filas, nada a imprimir, asi que voy " .
"a detenerme.";
exit;
}

  require 
"includes/class.phpmailer.php";

  
$mail = new phpmailer();

  
$mail->PluginDir "includes/";

  
$mail->Mailer "smtp";

  
$mail->Host "smtp.xxxx.xxx";

  
$mail->SMTPAuth true;

  
$mail->Username "xxxx xxxx"
  
$mail->Password "xxxxx";

  
$mail->From "xxxxxx xxxxxx";
  
$mail->FromName "Eduardo Garcia";


  
$mail->Timeout=30;

  
//$mail->AddAddress("xxxxx xxxxxx");//ESTO ERA ANTES!

  //INSERTAMOS ESTO

  
while ($reg=mysql_fetch_array($resultado))
  {
       
$nuevomail $reg['email'];
       
$mail->AddAddress($nuevomail);
  }

  
//FIN DE LO INSERTADO

  
$mail->Subject "Prueba de phpmailer";
  
$mail->Body "<b>Mensaje de prueba mandado con phpmailer en formato html</b>";

  
$mail->AltBody "Mensaje de prueba mandado con phpmailer en formato solo texto";

  
$exito $mail->Send();

  
$intentos=1
  while ((!
$exito) && ($intentos 5)) {
    
sleep(5);
         
$exito $mail->Send();
         
$intentos=$intentos+1;    
    
   }
 
        
   if(!
$exito)
   {
    echo 
"Problemas enviando correo electrónico a ".$valor;
    echo 
"<br>".$mail->ErrorInfo;    
   }
   else
   {
    echo 
"Mensaje enviado correctamente";
     } 
?>
Creo no haberme olvidado nada, fijate si funciona. Acordate de verificar si el campo de tu tabla users donde almacenas el mail se llama "email" sino cambialo.
Saludos!
  #5 (permalink)  
Antiguo 16/06/2009, 06:26
 
Fecha de Ingreso: abril-2009
Mensajes: 9
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Como puedo combinar estos dos scripts

Mil Gracias funciona muy bien!!!
Ahora tengo que ponerme a estudiar como hacer attach de imagenes para que me quede bien botino...
Una vez mas mil 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:26.