Foros del Web » Programando para Internet » PHP »

Mandar mail personalizado a 10 personas...

Estas en el tema de Mandar mail personalizado a 10 personas... en el foro de PHP en Foros del Web. Hola, me gustaría saber si alguien sabe como se puede mandar desde una paguina web un mail a 10 personas a la vez, pero cuando ...
  #1 (permalink)  
Antiguo 30/11/2007, 07:13
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 17 años, 7 meses
Puntos: 0
Mandar mail personalizado a 10 personas...

Hola, me gustaría saber si alguien sabe como se puede mandar desde una paguina web un mail a 10 personas a la vez, pero cuando lo reciba cada persona ponga:

Hola [nombre de esa persona], [nombre de quien envia] te ha mandado un mensaje

Hola...bla, bla, bla...

Los datos de los nombres y los email ya los he recogido de un formulario. el primero de esos destinatarios lo pongo en el campo [para:] y los demas con [CC:] ó [CCO] a elección del que manda el mail. hasta aquí todo bien. Pero para hacer lo que aparece en este codigo para todos los destinatarios ¿Cómo?
Código PHP:
<?php
$id 
$_GET['id'];
require(
'includes/mi_conexion.inc');
$sql "SELECT * FROM confirmar WHERE validator = '$id'";
$query mysql_query($sql$conn) or die(mysql_error());
$pcarray mysql_fetch_array($query);
if (!
is_array($pcarray)) {
  echo 
"Oops! Nada por confirmar, contacta con el administrador";
  exit;
}
$to $pcarray["toemail"];
$toname $pcarray["toname"];
$from $pcarray["fromemail"];
$fromname $pcarray["fromname"];
$bcc $pcarray["bccemail"];
$bccName $pcarray["bccname"];
$cc $pcarray["ccemail"];
$ccName $pcarray["ccname"];
$subject $pcarray["subject"];
$messagebody $pcarray["message"];

$boundary "==MP_Bound_xyccr948x==";
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";
if (!
$cc == "") {
  
$headers .= "CC: " $cc "\r\n";
}
if (!
$bcc == "") {
  
$headers .= "BCC: " $bcc "\r\n";
}
$headers .= "From: " $from "\r\n";

$html_msg .= "<table width=\"500\" align=\"center\" border=\"1\" cellpadding=\"4\">";
$html_msg .= "<tr><td>Felicidades, " .ucfirst($toname). "!";
$html_msg .= "</td></tr><tr><td>";
$html_msg .= ucfirst($fromname). " te ha mandado una postal hoy.";
$html_msg .= "</td></tr><tr><td align=center>";
$html_msg .= $messagebody "\n";
$html_msg .= "</td></tr></table>"
.
.
.
Donde pone --->
Código PHP:
ucfirst($toname
me gustaría poner el nombre de cada uno de los destinatarios.

No sé si me estoy liando mucho

gracias
  #2 (permalink)  
Antiguo 30/11/2007, 11:13
 
Fecha de Ingreso: marzo-2007
Ubicación: En El salvador
Mensajes: 78
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Mandar mail personalizado a 10 personas...

Talvez haciendo un bucle
  #3 (permalink)  
Antiguo 30/11/2007, 15:14
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Re: Mandar mail personalizado a 10 personas...

debes tomar los mail desde alguna parte, generalmente desde una base de datos, luego haces una iteracion con los datos variables de cada correo..


Saludos,
__________________
Nuevamente a las pistas ...
  #4 (permalink)  
Antiguo 03/12/2007, 04:16
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Mandar mail personalizado a 10 personas...

Cita:
Iniciado por jorgedx Ver Mensaje
debes tomar los mail desde alguna parte, generalmente desde una base de datos, luego haces una iteracion con los datos variables de cada correo..


Saludos,
Vale, pero , si por ejemplo tengo que mandar 8 mails, dentro de ese bucle tendre que usar 8 veces la función mail(). La lógica me dice que sí, pero me gustaría saber vuestra opinión.

gracias
  #5 (permalink)  
Antiguo 03/12/2007, 04:25
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: Mandar mail personalizado a 10 personas...

Cita:
Iniciado por judes Ver Mensaje
Vale, pero , si por ejemplo tengo que mandar 8 mails, dentro de ese bucle tendre que usar 8 veces la función mail(). La lógica me dice que sí, pero me gustaría saber vuestra opinión.

gracias
Hola,

Si colocas la funcion MAIL() dentro de un bucle, tan solo tendras que colocarla una vez. La cada vez que el bucle se inicie pasará nuevamente por la función mail() enviando el correo con los datos personalizados.

Por ejemplo:

Código PHP:
while(list($usuario$correo) = sql_fetch_row($consulta$conexiondb)){
 
$contenido "aqui vendria el código html con las variables 
$usuario para personalizar el contenido... (por ejemplo)"
;
//efectuamos el envio del correo con las cabeceras correspondientes
mail()

Esta es una posible solucion. Tan solo hay que declarar la consulta MySQL para que recoja los datos de los 8 registros y ya esta listo el script.

Saludos
  #6 (permalink)  
Antiguo 03/12/2007, 04:40
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Mandar mail personalizado a 10 personas...

vale, muchas gracias, lo probaré y te cuento. De nuevo muchas gracias

Un saludo
  #7 (permalink)  
Antiguo 03/12/2007, 04:43
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Mandar mail personalizado a 10 personas...

Perdón, una dudilla que me ronda por la cabeza y que me gustaría resolver antes de meterme con el código. ¿cargará mucho al servidor esto de mandar tantos mails?
  #8 (permalink)  
Antiguo 03/12/2007, 05:02
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: Mandar mail personalizado a 10 personas...

Cita:
Iniciado por judes Ver Mensaje
Perdón, una dudilla que me ronda por la cabeza y que me gustaría resolver antes de meterme con el código. ¿cargará mucho al servidor esto de mandar tantos mails?
No creo que tengas que preocuparte en exceso por las cargas que pueda llegar ha asumir tu servidor por enviar 10 correos... ;) Para nada!!! :D

Saludos.
  #9 (permalink)  
Antiguo 03/12/2007, 05:15
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Mandar mail personalizado a 10 personas...

Quería decir 10 por x usuarios que usen el formulario para mandar los correos. Igual no son muchos ó igual sí. Es un server virtual. No sé, hay muchas variables que se me escapan. pero te haré caso y no me preocuparé, y si peta, pues aprendo de ello y pa lante
Gracias
  #10 (permalink)  
Antiguo 03/12/2007, 05:20
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: Mandar mail personalizado a 10 personas...

Judes, yo remito boletines a más 30000 usuarios, realizando consultas escalonadas de 100 en 100, o inlcuso de 250 en 250 envios consecutivos... Y aguantar, el tema aguanta! :)

Así que si tu volumen o previsión de envios es inferior, no creo que tengas problemas. También hay que tener en cuenta las caracteristicas del hosting que tengas contratado y sus posibles limitaciones. Pero lo dicho, si no hay un gran volumen y las direcciones son correctas, no creo que tengas muchos problemas.

Saludos
  #11 (permalink)  
Antiguo 03/12/2007, 06:11
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Mandar mail personalizado a 10 personas...

Gracias, me dejas mas tranquilo

Un saludo
  #12 (permalink)  
Antiguo 03/12/2007, 06:34
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Mandar mail personalizado a 10 personas...

hola, me ha surgido otra dudilla. veréis, tengo es array:
$paraNombre es un Array de nombres
y hago esta iteración para sacar cada uno de los nombres separados por comas y el último separado pos un " y ".
Código PHP:

foreach($paraNombre as $k => $p){
   if(
$k count($paraNombre)+1){
        
$para =  $p.", ";
        }else{
         
$para =  " y ".$p;
        }
 
$paraNombre .= $para

//para escribirlo lo pongo así:
"Feliz navidad, "htmlentities (ucfirst$paraNombre))."!"
pero la salida me sale con la palabra [Array] precediendo la lista de nombres

ej. Feliz navidad, Arraypepe, pepon, y pepin !
  #13 (permalink)  
Antiguo 03/12/2007, 07:36
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: Mandar mail personalizado a 10 personas...

Hay un problema en el código...

Código PHP:
        $para =  $p.", ";
        }else{
         
$para =  " y ".$p;
        } 
Aqui lo que estas haciendo es decir que $para = " y ".$p. donde $p es un valor númerico y no el contenido del array.

O sea, que para que funcione has de hacer algo parecido a:

Código PHP:
$para =  " y ".$paraNombre[$p]; 
De esta manera, el valor númerico de $p se correspondera a una posición del array nombres.

Saludos
  #14 (permalink)  
Antiguo 03/12/2007, 08:01
 
Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Mandar mail personalizado a 10 personas...

Cita:
Iniciado por popobcn Ver Mensaje
Hay un problema en el código...

Código PHP:
        $para =  $p.", ";
        }else{
         
$para =  " y ".$p;
        } 
Aqui lo que estas haciendo es decir que $para = " y ".$p. donde $p es un valor númerico y no el contenido del array.

O sea, que para que funcione has de hacer algo parecido a:

Código PHP:
$para =  " y ".$paraNombre[$p]; 
De esta manera, el valor númerico de $p se correspondera a una posición del array nombres.

Saludos
creo que estas equivocado. Asi es como tengo el codigo ahora mismo y mira como me lo formatea.

Recuerdo [$paraNombre] es una matriz

Código PHP:
$penultimo count($paraNombre)-2;
foreach(
$paraNombre as $k => $p){
   if(
$k count($paraNombre)+1){
        
$para =  ucwords$p).", ";
        if(
$k == $penultimo$para ucwords$p);
        }else
        
$para =  " y ".ucwords$p);
 
$paraNombre .= $para


//Para mostralos :
"Feliz navidad, "htmlentities ($paraNombre)."!" 
El resultado de esto es .
ej. Feliz navidad, ArrayPepe, pepon y Pepin !

Pero sigo sin poder hacer que desaparezca la palabra [Array] de delante de Pepe
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 02:43.