Foros del Web » Programando para Internet » PHP »

Ayuda newsletter

Estas en el tema de Ayuda newsletter en el foro de PHP en Foros del Web. Me puede alguien dar una idea de como desarrollar un newsletter?? (con la clase php.mailer....? O si existe algún modulo ya desarrollado? Gracias....
  #1 (permalink)  
Antiguo 18/10/2004, 08:04
 
Fecha de Ingreso: julio-2004
Mensajes: 127
Antigüedad: 19 años, 8 meses
Puntos: 1
Ayuda newsletter

Me puede alguien dar una idea de como desarrollar un newsletter?? (con la clase php.mailer....?
O si existe algún modulo ya desarrollado?


Gracias.
__________________
ArteCastellano.com Pintura y fotografia española.
LlanosLerma.com - Galeria de pintura de Llanos Lerma. Vida y obra
Madpixel Games - A jugar un rato
  #2 (permalink)  
Antiguo 18/10/2004, 08:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
En la misma documentación de PHP mailer hacen referencia a aplicaciones que usan esa classe .. revisalo por qué hay "newsletter".

Y si lo vas hacer tu .. primero tendrás que "armar" tu BD de e-mails al menos (o en el médio que deses almacenar esas direcciones de e-mail) tal para que puedas leerlas de tu BD o donde estén e ir componiendo el e-mail y enviarlo .. uno por uno si es personalizado o todos de una vez ...

Un saludo,
  #3 (permalink)  
Antiguo 19/10/2004, 02:18
 
Fecha de Ingreso: julio-2004
Mensajes: 127
Antigüedad: 19 años, 8 meses
Puntos: 1
Hola CLuster. Primero gracias, pues es el tercer mensaje que posteo en el foro y el único que me ha contestado hasta ahora.

He revisado la documentacion de la clase phpmailer.php (http://phpmailer.sourceforge.net) y no he encontrado nada referido a newsletter.

Tengo uno desarrollado, con el que recojo las direcciones y envío el boletin a esas direcciones en el BCC. Pero me da muchos problemas. No se por que motivo obtengo errores de servidor solo en algunas ocasiones. Creo que no es el mejor correcto. Por eso necesito ayuda.

¿Cómo envio todos a la vez?

Gracias
__________________
ArteCastellano.com Pintura y fotografia española.
LlanosLerma.com - Galeria de pintura de Llanos Lerma. Vida y obra
Madpixel Games - A jugar un rato
  #4 (permalink)  
Antiguo 19/10/2004, 02:26
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Existe un limite de direcciones que puedes poner en el BCC. Ademas, tienes que estar seguro que todas las direcciones tengan un formato correcto.

Lo normal en los newsletter no es enviar un solo email, sino varios. Puedes enviar uno con 10 direcciones en BCC, o incluso uno por direccion email. Esto trae consigo otros problemas, como el timeout. Pero puedes aislar que emails se han enviado correctamente.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 19/10/2004, 02:47
 
Fecha de Ingreso: julio-2004
Mensajes: 127
Antigüedad: 19 años, 8 meses
Puntos: 1
Hola Josemi.

Como puedo saber el límite del bcc?

Reconozco que tuve mucho problemas al enviar bcc grandes. Malas direcciones no, pues las revisé una a una. Directamente el servidor daba error y se detenia el envío. Y el cliente esperando...... :(
__________________
ArteCastellano.com Pintura y fotografia española.
LlanosLerma.com - Galeria de pintura de Llanos Lerma. Vida y obra
Madpixel Games - A jugar un rato
  #6 (permalink)  
Antiguo 19/10/2004, 03:21
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 22 años, 4 meses
Puntos: 3
A mi se me ocurre que mandes con un php tuyo, algo asl ;) :
$server_connection = mysql_connect
mysql_select_db("tubase", $server_connection) or die(mysql_error());
$sql="SELECT mail AS user FROM listacorreo WHERE ORDER BY `id` LIMIT $desde,$cantidad";
$resultado = mysql_query($sql) or die(mysql_error());
// fichero con la revista :P
$handle = fopen ("revista.php", "r");
$contents = "";
do {
$data = fread($handle, 100000);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);
$i=0;
// por si quieres que se pare en el recistro 50000
if($desde>=50000){
exit;
};
while($row = mysql_fetch_array($resultado)) {
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: mail <[email protected]>\r\n";
$headers .= "Reply-To: [email protected]\r\n";
$asunto= "Nueva Revista ";
mail("$row[mail]",$asunto,$contents,$headers);
$emailis .= " , $row[mail]";
$i++;
};
$desde=$desde+20;
$hasta=$hasta+20;
$pagina++;
echo "<html><head>
<META http-equiv='refresh' content='3;URL=dameemails.php?desde=$desde&hasta=$ hasta&pagina=$pagina&enviar=si&cantidad=$cantidad' >
</head><body>";
echo "Ha sido enviado a los mails : $emailis - total = $i </body></html>";
};


Deberias llamarla pagina.php y pasarle pagina.php?desde=0&hasta=10000

a ver que os parece... :S
__________________
Pancho - Consultor de usabilidad
  #7 (permalink)  
Antiguo 19/10/2004, 05:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Benemerit

Las aplicaciones desarrolladas usando PHP Mailer lo tienes en la página principal oficial de PHP Mailer al final en el apartado: "Projects using PHPMailer"

Por ejemplo:
Ciao EmailList Manager - open source mailing list manager
pLiMa (php List Manager) - mailing list application

Un saludo,

Última edición por Cluster; 19/10/2004 a las 05:27
  #8 (permalink)  
Antiguo 19/10/2004, 07:34
 
Fecha de Ingreso: julio-2004
Mensajes: 127
Antigüedad: 19 años, 8 meses
Puntos: 1
Bien. De todas formas, quizá sea una duda de concepto.

Que es lo recomendable:

Enviar el correo a los usuarios en un bucle, usuario por usuario
Enviar el correo a los usuarios en un bucle, por grupos de x en x en BCC
Enviar el correo a los usuarios en un bucle, todos en el BCC (hablamos de unos 200 ususarios... etc)
O existe otro método que desconozco. ¿?

Gracias a todos y un saludo.
__________________
ArteCastellano.com Pintura y fotografia española.
LlanosLerma.com - Galeria de pintura de Llanos Lerma. Vida y obra
Madpixel Games - A jugar un rato
  #9 (permalink)  
Antiguo 19/10/2004, 12:47
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 22 años, 4 meses
Puntos: 3
Aunque supongo que cluster te contestará.... Enviar el correo a los usuarios en un bucle, usuario por usuario, es lo más recomendable, sea como sea, la personalización y los recursos de server estará mejor si es de uno en uno...
__________________
Pancho - Consultor de usabilidad
  #10 (permalink)  
Antiguo 19/10/2004, 13:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Antonito:
Aunque supongo que cluster te contestará....
Te comenté en privado que todo aporte/opinión y experiencia de cada uno de la gente que quiera participar es bueno.

---------------------------------------

Yo no usaría BCC .. para enviar el correo, si usas BCC (copia "oculta") algunos servicios de e-mail con filtros de anti-spam fuertes suelen catalogar ese tipo de e-mails sin "TO:" (que es lo que generas si usas sólo BCC) como "SPAM".

Por mi parte usaría la casse PHP Mailer usando envio SMTP directo y a ser posible usando vários servidores SMTP simultáneamente para balancear la carga del envio de e-mails (cosa que puede hace PHP Mailer). Pero .. con 200 e-mails .. no es para tanto. Por lo menos yo suelo enviar tantas de 300 mails sin problemas (eso sí, mi servidor SMTP es dedicado .. pero uso una simple conexión ADSL para el envio y uso PHP Mailer vía SMTP directo)

Un saludo,
  #11 (permalink)  
Antiguo 20/10/2004, 01:58
 
Fecha de Ingreso: julio-2004
Mensajes: 127
Antigüedad: 19 años, 8 meses
Puntos: 1
O gracias a los dos.

Pero Cluster, ¿envias tandas de 300 mails con bcc o uno a uno?.


Este es el código:

$t_nombre_e="Boletín xxx";
$t_mail_e=("[email protected]");
$t_nombre_r=("Boletín xxx");
$t_mail_r=($_POST['receptor']);
$t_comenta_e=("");


$to = $t_mail_r;
$subject = "Boletín xxx Octubre 2004";


require "inc/class/class.phpmailer.php";

$mail = new phpmailer();
$mail->PluginDir = "inc/class/";
$mail->Mailer = "smtp";
$mail->Host = "smtp.xxx.es";
$mail->SMTPAuth = true;
$mail->Username = "xxx";
$mail->Password = "xxx";
// $mail->ContentType=""
$mail->IsHTML=true;

$mail->From = "$t_mail_e";
$mail->FromName = "Boletín xxx";

$mail->AddReplyTo ( "$t_mail_e", "$t_nombre_e");

$mail->Timeout= 30;


$mail->AddAddress($to);

$bcc=(string) urlencode(stripslashes($_POST['bcc']));

//echo $bcc;
$array_bcc= split("%0D%0A",$bcc);

foreach ($array_bcc as $usuario) {
echo "-".urldecode($usuario)."-<br>";
$subUsuario=urldecode($usuario);
$mail->AddBCC($subUsuario);
}


$mail->Subject = $subject;
$body= "<html>".stripslashes($_POST['Mensaje'])."</html>";
$mail->Body = $body;


$body_no_html = $_POST['Mensaje'];


$mail->AltBody = $body_no_html;

$exito = $mail->Send();


$intentos=1;
while((!$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
sleep(120);
$exito = $mail->Send();
$intentos=$intentos+1;

}
if ($mail->ErrorInfo=="SMTP Error: Data not accepted") {
$exito=true;
}

if(!$exito){
echo "<span class='base'>No se ha podido enviar su mensaje.<br><br>Por favor, int&eacute;ntelo mas tarde.</span><br>";
}else{
echo "<span class='base'><br><b>Boletin enviado con exito.</b></span><br>";
}


He sustituido algunos elementos por "xxx" porque es para un cliente.
Se recibe la lista de usuarios por un formulario. Aunque rudimentario, lo importante es que primero funcione bien el envío.

¿Que hago mal? a veces se queda pensado un buen rato y no lo procesa indicando error del servidor. Pssss. Creo que es cuando en el BCC hay una dirección con un nombre de dominio que no existe.

Por vuestra ayuda: :):):)
Por el problema: :( grrrrrrrr

Gracias
__________________
ArteCastellano.com Pintura y fotografia española.
LlanosLerma.com - Galeria de pintura de Llanos Lerma. Vida y obra
Madpixel Games - A jugar un rato
  #12 (permalink)  
Antiguo 20/10/2004, 06:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Envio uno a uno sólo 300 (o más, no hago "tandas" los envio todos). Así tengo mejor control sobre el e-mail que se envia o el que no y otros problemas como de sintax de la própia dirección de e-mail...

Por cierto .. si haces un sleep() y retrasas la ejecución del escrip .. tendrás que aumentar el tiempo máximo de ejecución del script con set_time_limit()

Un saludo,

Un saludo,
  #13 (permalink)  
Antiguo 20/10/2004, 06:34
 
Fecha de Ingreso: julio-2004
Mensajes: 127
Antigüedad: 19 años, 8 meses
Puntos: 1
De acuerdo.

Muchisimas gracias.

Un saludo.
__________________
ArteCastellano.com Pintura y fotografia española.
LlanosLerma.com - Galeria de pintura de Llanos Lerma. Vida y obra
Madpixel Games - A jugar un rato
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 14:05.