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.
-
// echo $row["nombres"];
-
}
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.
-
require(“class.phpmailer.php”);
-
$mail = new PHPMailer();
-
$mail->Host = “smtp1.example.com”;
-
$mail->From = “list@domain.com”;
-
$mail->FromName = “List manager”;
-
$mail->Subject = “Subject del correo”;
-
// HTML body
-
$body = “Hola <strong>”.$row["nombres"].“</strong>, “;
-
$body.= “<p>Les comunicamos el nuevo servicio… <p>”;
-
$body.= “<em>List manager</em>”;
-
// Text body
-
$text = “Hola “.$row["nombres"].“, \n\n“;
-
$text.= “Les comunicamos el nuevo servicio…\n\n“;
-
$text.= “List manager”;
-
// Configurar Email
-
$mail->Body = $body;
-
$mail->AltBody = $text;
-
$mail->AddAddress($row["email"], $row["nombres"]);
-
// Enviar el email
-
if(!$mail->Send()) {
-
}
-
$mail->ClearAddresses();
-
}
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.
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:
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.
-
$rpta = “”;
-
if ($_POST["action"] == “upload”) {
-
$tmpfile = $_FILES['archivo']['tmp_name'];
-
$tmpname = $_FILES['archivo']['name'];
-
$ftpuser = “usuario”;
-
$ftppass = “password”;
-
$ftppath = “ftp.dominio.com/path/”;
-
$ftpurl = “ftp://”.$ftpuser.“:”.$ftppass.“@”.$ftppath;
-
if ($tmpname != “”) {
-
$ch = curl_init();
-
curl_setopt($ch, CURLOPT_URL, $ftpurl.$tmpname);
-
curl_setopt($ch, CURLOPT_UPLOAD, 1);
-
curl_setopt($ch, CURLOPT_INFILE, $fp);
-
curl_exec($ch);
-
$error = curl_errno($ch);
-
curl_close ($ch);
-
if ($error == 0) {
-
$rpta = ‘Archivo subido correctamente.’;
-
} else {
-
$rpta = ‘Error al subir el archivo.’;
-
}
-
} else {
-
$rpta = ‘Seleccionar un archivo.’;
-
}
-
}
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.
