Dentro de las funcionalidades básicas de cualquier aplicación web se encuentra la comunicación con el usuario a través de correo electrónico. Tenemos la opción fácil y directa de usar la función mail() de PHP que usa un demonio de SMTP propio (suele ser sendmail), sin embargo, los filtros de spam harán su labor y aunque seamos confiables, tenemos todas las papeletas para que nos tachen de los contrario y el correo no llegará a su destino.
La solución es usar un servidor SMTP externo, aquí mismo explicamos cómo hacer uso del servidor SMTP de Gmail para usarlo dentro de WordPress, pero vamos a explicaros un método válido para cualquier aplicación que desarrolléis con PHP.
Lo primero que tenemos que hacer es descargar la clase que se encargará del trabajo, es software libre bajo licencia GPL, hablamos del proyecto PHPMailer. Descargamos la última versión disponible para nuestra versión de PHP (aquí hablaremos de la versión más actual, la que corresponde con PHP 5) y descomprimimos.
Nos comenta danipelon que la versión oficial del proyecto está ahora en GitHub, esta es la dirección.
La clase tiene otras funcionalidades, pero nosotros como sólo vamos a enviar correo, usaremos el código de los ficheros:
El procedimiento es el siguiente: incluimos los ficheros en cuestión, instanciamos un objeto, asignamos sus atributos (asunto, remitente, destinatario, cuerpo del mensaje) y finalmente ejecutamos un método que lo envía.
Veamos un ejemplo completo:
require(‘class.phpmailer.php’);
require(‘class.smtp.php’);
$mail = new PHPMailer();
$body = “Cuerpo del mensaje”;
$mail->IsSMTP();
// la dirección del servidor, p. ej.: smtp.servidor.com
$mail->Host = “direccion_servidor”;
// dirección remitente, p. ej.: no-responder@miempresa.com
$mail->From = “Dirección_remitente”;
// nombre remitente, p. ej.: "Servicio de envío automático"
$mail->FromName = “Nombre_remitente”;
// asunto y cuerpo alternativo del mensaje
$mail->Subject = “Asunto”;
$mail->AltBody = “Cuerpo alternativo
para cuando el visor no puede leer HTML en el cuerpo”;
// si el cuerpo del mensaje es HTML
$mail->MsgHTML($body);
// podemos hacer varios AddAdress
$mail->AddAddress(“dirección_destino”, “Nombre_destino”);
// si el SMTP necesita autenticación
$mail->SMTPAuth = true;
// credenciales usuario
$mail->Username = “Usuario”;
$mail->Password = “Contraseña”;
if(!$mail->Send()) {
echo “Error enviando: ” . $mail->ErrorInfo;
} else {
echo “¡¡Enviado!!”;
}
Ver comentarios
Aquí tienes otra API para enviar correos con PHP y, para mi gusto, mucho más potente.
http://swiftmailer.org/
@Sergio: Gracias por el enlace, no conocía esa API y parece mucho más profesional por lo que veo. La tendré en cuenta a partir de ahora.
Deberías explicar mejor como integrarlo en un blog con WordPress.
No se si es el sueño que tengo, pero no logro entenderlo.
@emslinux: Para integrarlo en WordPress puedes usar estos dos plugins:
* El explicado en este post para usar Gmail o Google Apps
* WP Mail SMTP, para cualquiera
Hola,
En mi blog tengo un par de publicaciones en las que se explica como agregar un formulario de contacto a wordpress y como configurar wordpress para enviar correos utilizando gmail como smtp server.
Si integran las 2 cosas pueden enviar correos sin problemas, he probado los métodos en varios sitios web que he realizado y nunca me han presentado problemas.
http://geniutrixone.wordpress.com/category/cms/wordpress/
Saludos.
Grande maestro, he buscado por todas partes y al fín pude enviar un mail gracias a tu post. te mereces un 100%. Saludos
Buenisimo !
a mi me da error al autenticar, Could not authenticate.... aun poniendolo a true
ya si, hay que añadir estas tres lineas para enviarlo desde gmail
$mail->Mailer = 'smtp'; $mail->Host = 'ssl://smtp.gmail.com'; $mail->Port = 465;
ahora m salta un error de conexion... ju
Prueba con esto a ver qué tal:
$mail->SMTPAuth = true; // Habilita la autenticación SMTP $mail->SMTPSecure = "ssl"; // Establece el tipo de seguridad SMTP $mail->Host = "smtp.gmail.com"; // Establece Gmail como el servidor SMTP $mail->Port = 465; // Establece el puerto del servidor SMTP de Gmail
Muchas gracias por la información. Comentar que para descargar PHPMAiILER ahora tenemos que ir a: http://code.google.com/a/apache-extras.org/p/phpmailer/