Como usar PHPMailer sin morir en el intento
15:04Todos sabemos que para enviar correos electrónicos con PHP se utiliza la función mail() y claro, para complicarte mas, si quieres envi...
15:04
Todos sabemos que para enviar correos electrónicos con PHP se utiliza la función mail() y claro, para complicarte mas, si quieres enviar en formato HTML debes de agregar los headers y se te pone feo si no sabes como adjuntar archivos.
Bueno, aqui les explicaré como usar PHPMailer el cual nos permitirá enviar correos de la manera mas sencilla, unas de las características de este script son:
- Es uno de los códigos mas populares para enviar correos en PHP.
- Es usado por muchos famosos proyectos de código abierto como WordPress, Drupal, Yii, Joomla y muchos otros.
- Permite enviar correos en texto plano o HTML
- Permite enviar archivos adjuntos
- Permite enviar correos usando un servidor SMTP y con autentificación SSL y TLS
- Permite enviar correos multiples y con copia oculta
- Soporta el formato UTF-8, 8 bits, base64, binario
- Y mucho mas.
Ahora empezemos….
Bajamos el script desde github: https://github.com/Synchro/PHPMailer
Descomprimimos el archivo en una carpeta llamada /phpmailer
Creamos nuestro archivo llamado enviar_correo.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
<?php
//Incluimos la clase de PHPMailer
require_once('phpmailer/class.phpmailer.php');
$correo = new PHPMailer(); //Creamos una instancia en lugar usar mail()
//Usamos el SetFrom para decirle al script quien envia el correo
$correo->SetFrom("me@micodigophp.com", "Mi Codigo PHP");
//Usamos el AddReplyTo para decirle al script a quien tiene que responder el correo
$correo->AddReplyTo("me@micodigophp.com","Mi Codigo PHP");
//Usamos el AddAddress para agregar un destinatario
$correo->AddAddress("destino@correo.com", "Robot");
//Ponemos el asunto del mensaje
$correo->Subject = "Mi primero correo con PHPMailer";
/*
* Si deseamos enviar un correo con formato HTML utilizaremos MsgHTML:
* $correo->MsgHTML("<strong>Mi Mensaje en HTML</strong>");
* Si deseamos enviarlo en texto plano, haremos lo siguiente:
* $correo->IsHTML(false);
* $correo->Body = "Mi mensaje en Texto Plano";
*/
$correo->MsgHTML("Mi Mensaje en <strong>HTML</strong>");
//Si deseamos agregar un archivo adjunto utilizamos AddAttachment
$correo->AddAttachment("images/phpmailer.gif");
//Enviamos el correo
if(!$correo->Send()) {
echo "Hubo un error: " . $correo->ErrorInfo;
} else {
echo "Mensaje enviado con exito.";
}
?>
|
El código que hemos utilizado nos ha permitido enviar un mensaje en HTML y adjuntando un archivo.
IMPORTANTE: Si desean enviar el mensaje en texto plano, deben de reemplazar $correo->MsgHTML() por:
1
2
|
$correo->IsHTML(false);
$correo->Body = "Mi mensaje en Texto Plano";
|
Si deseas utilizar un servidor SMTP, tenemos que agregar unas cuantas lineas despues de crear la instancia
$correo = new PHPMailer();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
//Le decimos al script que utilizaremos SMTP
$correo->IsSMTP();
//Activaremos la autentificación SMTP el cual se utiliza en la mayoría de casos
$correo->SMTPAuth = true;
//Especificamos la seguridad de la conexion, puede ser SSL, TLS o lo dejamos en blanco si no sabemos
$correo->SMTPSecure = '';
//Especificamos el host del servidor SMTP
$correo->Host = "mail.misitio.com";
//Especficiamos el puerto del servidor SMTP
$correo->Port = 25;
//El usuario del servidor SMTP
$correo->Username = "usuario@misitio.com";
//Contraseña del usuario
$correo->Password = "mipassword";
|
Con ese ejemplo ya podemos usar GMail como servidor SMTP y enviar correos desde nuestra web, aqui un ejemplo completo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<?php
require_once('phpmailer/class.phpmailer.php');
$correo = new PHPMailer();
$correo->IsSMTP();
$correo->SMTPAuth = true;
$correo->SMTPSecure = 'tls';
$correo->Host = "smtp.gmail.com";
$correo->Port = 587;
$correo->Username = "micuenta@gmail.com";
$correo->Password = "mipassword";
$correo->SetFrom("micuenta@gmail.com", "Mi Codigo PHP");
$correo->AddReplyTo("micuenta@gmail.com","Mi Codigo PHP");
$correo->AddAddress("destino@correo.com", "Jorge");
$correo->Subject = "Mi primero correo con PHPMailer";
$correo->MsgHTML("Mi Mensaje en <strong>HTML</strong>");
$correo->AddAttachment("images/phpmailer.gif");
if(!$correo->Send()) {
echo "Hubo un error: " . $correo->ErrorInfo;
} else {
echo "Mensaje enviado con exito.";
}
?>
|
Con eso concluimos este tutorial, si desean uno en particular, haganlo saber en sus comentarios.
Notas: Gracias a @AnivalAlvarez por su sugerencia, nos ha proporcionado dos funciones que de seguro serán importantes para ustedes.
1
2
3
4
5
|
// Timeout para el servidor de correos. Por defecto es valor es '10'
$correo->Timeout=30;
// Codificación UTF8. Obligado utilizarlo en aplicaciones en Español
$correo->CharSet = 'UTF-8';
|