Enviar correos con PHPMailer
Para enviar correos podemos utilizar la función mail() de PHP pero desde algunos servidores, o desde localhost esta función no funciona ya que no esta correctamente configurado el servidor SMTP.
Para solucionar esto podemos usar PHPMailer. Esta clase nos permite, por ejemplo, mandar correos desde nuestra cuenta de Gmail o cualquier otra y evitar problemas. Veamos como.
Lo primero que tenemos que hacer es incluir los archivos necesarios. En este caso nos hace falta la clase PHPMailer y además la SMTP que viene en la misma descarga.
include("class.phpmailer.php");
include("class.smtp.php");
A continuación debemos de configurar y crear el objeto a partir de la clase. Primero definimos el objeto a partir de la clases PHPMailer y decimos que el envio será mediante un servidor SMTP y deforma segura usando SSL.
$mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl";
Configuramos los datos del servidor SMTP. En este caso lo haremos mediante Gmail por lo que debemos dar un usuario y contraseña ademas del puerto y servidor
$mail->Host = "smtp.gmail.com"; $mail->Port = 465; $mail->Username = "usuario@gmail.com"; $mail->Password = "contraseña";
Por ultimo solo nos queda crear nuestro mensaje. Como vemos es bastante sencillo, solo tenemos que configurar los distintos elementos de un email. Remitente y su nombre, asunto, mensaje en versión de texto plana (por si el destinatario no admite HTML y la versión HTML. En las dos ultimas lineas definimos el destinatario y que nuestro mensaje se enviara en HTML.
$mail->From = "remitente@domain.com";
$mail->FromName = "Nombre del remitente";
$mail->Subject = "Asunto del correo";
$mail->AltBody = "Hola,\neste correo ha sido enviado desde PHP usando PHPMailer.";
$mail->MsgHTML("Hola,<br>este correo ha sido enviado desde PHP usando <strong>PHPMailer</strong>.");
// Adjuntar archivos
// Podemos agregar mas de uno si queremos.
$mail->AddAttachment("ruta-del-archivo/archivo.zip");
$mail->AddAddress("destinatario@domain.com", "Destinatario");
$mail->IsHTML(true);
Por último, solo nos queda enviar el mensaje.
if(!$mail->Send()) {
echo "Error: " . $mail->ErrorInfo;
} else {
echo "Mensaje enviado.";
}
Y ya está, si todo va bien el email se enviará y se imprimirá en pantalla el mensaje Mensaje enviado. si por el contrario se produce algún error nos informará de la misma manera por pantalla.
Recordad configurar el servidor SMTP con vuestros datos de vuestra cuenta de Gmail, si no no funcionará.
Aqui tenéis el código completo si quereis copiarla mas comodamente.