Preguntas Frecuentes
Soporte Técnico
¿Cómo envío correos con PHP por SMTP? (PHPMailer)
La gran mayoría de personas que programan en PHP, utilizan la función mail() para realizar envíos, ya sean simples o complejos. El problema está cuando intentan realizar envíos masivos con esta función. Esta es mucho más simple por su compatibilidad y facilidad de uso con MySQL, pero no esta preparada para grandes cantidades de envíos.
Por suerte, existen clases como PHPMailer, que nos permiten realizar estos mismos envíos por el puerto y smtp que queramos, creando una aplicación mucho más potente y con la posibilidad de tener un mejor control de los envíos al existir reportes de correo.
PHPMailer es una clase de PHP gratuita.
Algunas de las funciones que trae son:
- Envíos a varios remitentes, con CC, CCO, etc.
- Soporta 8bits, base64 y binarios
- Autenticación por SMTP
- Envíos con HTML
- Envíos de emails con adjuntos
- Inclusión de imágenes en el correo
Una vez que tenemos la clase en nuestro sitio, debemos iniciar la misma desde PHP, usando la función require y cargando la clase de PHP:
require("class.phpmailer.php");
$mail = new PHPMailer();
//Luego tenemos que iniciar la validación por SMTP:
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = ""; // SMTP a utilizar. Por ej. smtp.elserver.com
$mail->Username = "; // Correo completo a utilizar
$mail->Password = ""; // Contraseña
$mail->Port = 25; // Puerto a utilizar
//Con estas pocas líneas iniciamos una conexión con el SMTP. Lo que ahora deberíamos hacer, es configurar el mensaje a enviar, el //From, etc.
$mail->From = "info@elserver.com"; // Desde donde enviamos (Para mostrar)
$mail->FromName = "Nombre";
//Estas dos líneas, cumplirían la función de encabezado (En mail() usado de esta forma: “From: Nombre <correo@dominio.com>”) de //correo.
$mail->AddAddress("correo"); // Esta es la dirección a donde enviamos
$mail->IsHTML(true); // El correo se envía como HTML
$mail->Subject = “Titulo”; // Este es el titulo del email.
$body = “Hola mundo. Esta es la primer línea<br />”;
$body .= “Acá continuo el <strong>mensaje</strong>”;
$mail->Body = $body; // Mensaje a enviar
$exito = $mail->Send(); // Envía el correo.
//También podríamos agregar simples verificaciones para saber si se envió:
if($exito){
echo ‘El correo fue enviado correctamente.’;
}else{
echo ‘Hubo un inconveniente. Contacta a un administrador.’;
}
Adjuntos
Este script va a funcionar perfecto, pero está claro que no todos los clientes de correo o Webmails soportan HTML, por lo que podríamos querer mostrar un texto alternativo plano. Esto lo podemos hacer agregando la siguiente línea:
$mail->AltBody = "Hola mundo. Esta es la primer línea\n Acá continuo el mensaje”;
Como bien comente antes, PHPMailer tiene cantidades de funciones, entre ellas la posibilidad de enviar adjuntos. Los mismos se pueden agregar de la siguiente forma:
$mail->AddAttachment("imagenes/imagenadjunta.jpg", "nombre_a_mostrar.jpg");
El primer valor es el que se utiliza para elegir la ruta del archivo. El segundo, es para marcar el nombre del archivo a mostrar.
CC y BBC
También tenemos la posibilidad de agregar cuentas en copia oculta para cuando tenemos muchos remitentes con las siguientes líneas:
$mail->AddCC("cuenta@dominio.com");
$mail->AddBCC("cuenta@dominio.com");
Sistema completo
Para finalizar, dejo el sistema completo para que no haya confusiones:
<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = ""; // SMTP a utilizar. Por ej. smtp.elserver.com
$mail->Username = ""; // Correo completo a utilizar
$mail->Password = ""; // Contraseña
$mail->Port = 25; // Puerto a utilizar
$mail->From = "info@elserver.com"; // Desde donde enviamos (Para mostrar)
$mail->FromName = "ELSERVER.COM";
$mail->AddAddress("correo"); // Esta es la dirección a donde enviamos
$mail->AddCC("cuenta@dominio.com"); // Copia
$mail->AddBCC("cuenta@dominio.com"); // Copia oculta
$mail->IsHTML(true); // El correo se envía como HTML
$mail->Subject = “Titulo”; // Este es el titulo del email.
$body = “Hola mundo. Esta es la primer línea<br />”;
$body .= “Acá continuo el <strong>mensaje</strong>”;
$mail->Body = $body; // Mensaje a enviar
$mail->AltBody = "Hola mundo. Esta es la primer línea\n Acá continuo el mensaje”; // Texto sin html
$mail->AddAttachment("imagenes/imagen.jpg", "imagen.jpg");
$exito = $mail->Send(); // Envía el correo.
if($exito){
echo ‘El correo fue enviado correctamente.’;
}else{
echo ‘Hubo un inconveniente. Contacta a un administrador.’;
}
?>
Tags: smtp, correo, enviar, phpmailer, envios
Artículos en esta categoría
- ¿Cuáles son los DNS de ELSERVER.COM? ¿Y los marca blanca?
- ¿Como tengo que hacer para subir mi pagina web?.
- ¿Cómo se que DNS está tomando Nic.ar?
- ¿Cómo configuro el servicio de Streaming en el Winamp?
- ¿Cómo agrego un reproductor a mi sitio?
- ¿Cómo usar el mySql con UTF-8?
- ¿Qué necesito para publicar una página en Internet?
- Instalación de WP-Supercache
- ¿Qué es un DNS?
- ¿Cómo sacar capturas de pantalla?
- ¿Cómo puedo saber los recursos que tengo consumidos en mi cuenta?
- ¿Cuáles son las librerías de PHP5 soportadas por ELSERVER.COM?
- ¿Qué diferencia hay entre cada una de las configuraciones de PHP5?
- ¿Cómo puedo hacer para crear un dominio .com.ar?
- ¿Cómo recupero mis datos de acceso del panel de control?
- ¿Cuál es el tamaño máximo permitido para subir archivos mediante aplicaciones en php?
- Qué es SSH ?
- Cómo doy de alta un usuario SSH ?
- Como ingreso al servicio de SSH ?
- Quiero ejecutar mi BOT-IRC y mi descargador de películas y no puedo! Qué pasa!?
- No se NADA de NADA de SSH pero quiero usarlo igual, qué hago?
- Ya logré conectarme, pero no veo mi sitio! Y qué son todas estas carpetas nuevas?
- Como puedo asegurar mi cuenta luego de una intrusión / inyección de archivos?
- Consejos antes de enviar tu consulta a Soporte Técnico
- Acabo de contratar el servicio...¿Como migro mi cuenta desde otro proveedor?
- ¿Qué debo poner como host en la configuración de la conexión mysql de mi aplicación web?
Buenos Aires (011) 5254.0544
Madrid: (+34) 911895144
DF: (+52) 5540001022
Caracas: (+58) 2123357630
Lima: (+51) 17201710