El Ricon de Miller

Just another WordPress.com weblog

Enviar email multiple con PHP

En algunas ocasiones nos topamos con la necesidad de enviar email a una lista de correo, esto lo podemos hacer utilizando la librería PHPMailer el cual nos permite enviar emails con algunas opciones avanzadas para este tipo de labores.

Extraer datos de los destinatarios
Sea que tenemos una lista de clientes registrados en una base de datos tienda en la tabla clientes y deseamos enviarle un comunicado a cada uno de ellos de forma personalizada. Lo primero que tenemos que hacer es realizar la consulta a la base de datos y extraer los datos de estos clientes.

PHP:

  1. mysql_connect(“localhost”, “usuario”, “password”);
  2. mysql_select_db(“tienda”);
  3. $result = mysql_query(“SELECT nombres, email FROM clientes”);
  4. while ($row = mysql_fetch_array($result)) {
  5. // echo $row["nombres"];
  6. }

Integrando con PHPMailer
El siguiente paso es hacer el envío de los correos, para ello primero incluimos la clase class.phpmailer.php, definimos los datos del remitente y creamos el mensaje personalizado en html y texto a enviar a la lista.

PHP:

  1. require(“class.phpmailer.php”);
  2. $mail = new PHPMailer();
  3. $mail->Host = “smtp1.example.com”;
  4. $mail->From = “list@domain.com”;
  5. $mail->FromName = “List manager”;
  6. $mail->Subject = “Subject del correo”;
  7. mysql_connect(“localhost”, “usuario”, “password”);
  8. mysql_select_db(“tienda”);
  9. $result = mysql_query(“SELECT nombres, email FROM clientes”);
  10. while ($row = mysql_fetch_array($result)) {
  11. // HTML body
  12. $body = “Hola <strong>”.$row["nombres"].“</strong>, “;
  13. $body.= “<p>Les comunicamos el nuevo servicio… <p>”;
  14. $body.= “<em>List manager</em>”;
  15. // Text body
  16. $text = “Hola “.$row["nombres"].“, \n\n;
  17. $text.= “Les comunicamos el nuevo servicio…\n\n;
  18. $text.= “List manager”;
  19. // Configurar Email
  20. $mail->Body = $body;
  21. $mail->AltBody = $text;
  22. $mail->AddAddress($row["email"], $row["nombres"]);
  23. // Enviar el email
  24. if(!$mail->Send()) {
  25. echo “Error al enviar a: “ . $row["email"] . “<br>”;
  26. }
  27. $mail->ClearAddresses();
  28. }

Nótese que incluimos la dirección del destinatario con el método AddAddress en donde le pasamos el email y el nombre de la persona a la que deseamos enviar el email y finalmente utilizamos ClearAddresses el cual elimina las email a los cuales se ha enviado anteriormente el mensaje, de esta forma le llegará a cada usuario una mensaje único si necesidad de mostrar a quienes mas se esta enviando el mensaje.

Observaciones
En el caso que se quiera enviar a listas muy grandes, se deben cambiar algunos parámetros de configuración de PHP por ejemplo el tiempo de ejecución para que no se detenga el envío si el tiempo de proceso excede el tiempo de configuración. Una solución es hacer el envío en bloques de 500 o en bloques de 1000 por vez por ejemplo con lo cual no se superará el tiempo limite.

Finalmente les dejo los archivos fuente para que lo descarguen y realicen sus propias pruebas.

julio 24, 2008 Publicado por | Ejemplos Importantes | Dejar un comentario

FTP Upload con PHP

Hoy les presentamos una guía de como implementar Upload de archivos por FTP utilizando PHP. Para ello nos hemos guiado de FTP Upload via cURL en donde esta muy bien explicado.

Que necesitamos?
cURL es una librería PHP muy potente la cual permite enviar y recibir archivos por diferentes protocolos (HTTP, FTP), además soporte envío de datos por POST o GET, incluso permite autenticarse en servidores remotos. Entonces utilizaremos cURL para conectarnos al nuestro FTP y haremos la transferencia del archivo seleccionado.

Creando el Formulario
Lo primero es crear un formulario en donde seleccionaremos el archivo a subir, esto de la siguiente forma:

HTML:

  1. <form action=“” method=“post” enctype=“multipart/form-data”>
  2. Seleccionar archivo:
  3. <input type=“file” name=“archivo” />
  4. <input type=“submit” name=“enviar” value=“Upload” />
  5. <input type=“hidden” name=“action” value=“upload” />
  6. </form>

Creando el Script
El siguiente paso es crear el php que se encargue de subir el archivo, primero verificamos que se haya seleccionado el archivo, luego creamos una variable cURL la cual asignamos con los valores que deseamos enviar y finalmente verificamos que se haya subido correctamente el archivo.

PHP:

  1. $rpta = “”;
  2. if ($_POST["action"] == “upload”) {
  3. $tmpfile = $_FILES['archivo']['tmp_name'];
  4. $tmpname = $_FILES['archivo']['name'];
  5. $ftpuser = “usuario”;
  6. $ftppass = “password”;
  7. $ftppath = “ftp.dominio.com/path/”;
  8. $ftpurl = “ftp://”.$ftpuser.“:”.$ftppass.“@”.$ftppath;
  9. if ($tmpname != “”) {
  10. $fp = fopen($tmpfile, ‘r’);
  11. $ch = curl_init();
  12. curl_setopt($ch, CURLOPT_URL, $ftpurl.$tmpname);
  13. curl_setopt($ch, CURLOPT_UPLOAD, 1);
  14. curl_setopt($ch, CURLOPT_INFILE, $fp);
  15. curl_setopt($ch, CURLOPT_INFILESIZE, filesize($tmpfile));
  16. curl_exec($ch);
  17. $error = curl_errno($ch);
  18. curl_close ($ch);
  19. if ($error == 0) {
  20. $rpta = ‘Archivo subido correctamente.’;
  21. } else {
  22. $rpta = ‘Error al subir el archivo.’;
  23. }
  24. } else {
  25. $rpta = ‘Seleccionar un archivo.’;
  26. }
  27. }

Como puede ver no es muy complicado este tipo de implementación y tiene la ventaja que podemos enviar archivos mas grandes que con upload de forma normal. No he puesto una versión de este ejemplo funcionando pues quiero evitar que suban archivos no deseados. Finalmente les dejo los archivos fuente de este ejemplo en donde solo deben colocar el usuario, clave y dominio a donde desean subir.


julio 24, 2008 Publicado por | Ejemplos Importantes | Dejar un comentario

   

Seguir

Get every new post delivered to your Inbox.