Envío de correos con autentificación en PHP
Envío de mails desde PHP con smtp, autenticacion, ssl y otros.
Normalmente el envio de mail se realiza utilizando la funcion mail() pero haciendolo de este modo prácticamente no tenemos flexibilidad ni opciones.
Por ejemplo: cuando queremos enviar mails por smtp, utilizando una cuenta en particular, o nuestro servidor no tiene configurado un servidor local para PHP, o necesitamos una conexion SSL, etc.
En estos casos podemos usar la clase phpmailer, que nos da todas estas opciones y más.
Una vez que tenemos la clase y la hemos colocado en nuestro sitio, tenemos que incluir el archivo de la misma e instanciar la clase:
require(”phpmailer/class.phpmailer.php”);
$mail = new PHPMailer();
Definimos mail de origen, destino, nombre, etc.:
$mail->From = $mailfrom; // Mail de origen
$mail->FromName = $name; // Nombre del que envia
$mail->AddAddress($para); // Mail destino, podemos agregar muchas direcciones
$mail->AddReplyTo($mailfrom); // Mail de respuesta
Contenido del mail:
$mail->WordWrap = 50; // Largo de las lineas
$mail->IsHTML(true); // Podemos incluir tags html
$mail->Subject = “Consulta formulario Web: $name”;
$mail->Body = “Nombre: $name \n<br />”.
“Email: $mailfrom \n<br />”.
“Tel: $tel \n<br />”.
“Mensaje: $info \n<br />”;
$mail->AltBody = strip_tags($mail->Body); // Este es el contenido alternativo sin html
Para adjuntar archivos podemos hacerlo de la siguiente forma:
$mail->AddAttachment(”nombredearchivo.txt”); // Ingresamos la ruta del archivo
Definimos el servidor que enviara el mail, podemos definir tipo de servidor, autenticacion, usuario, contraseña, … Por ejemplo.
Si vamos a enviar mail desde el servidor local sin configuración especial podemos usar:
$mail->Host = ‘localhost’;
Si necesitamos utilizar una casilla de correo smtp, con user y pass:
$mail->IsSMTP(); // vamos a conectarnos a un servidor SMTP
$mail->Host = “mail.servidor.com”; // direccion del servidor
$mail->SMTPAuth = true; // usaremos autenticacion
$mail->Username = “info@servidor.com”; // usuario
$mail->Password = “pass”; // contraseña
Si necesitamos una conexion con SSL, por ejemplo para enviar un mail desde PHP con gmail:
$mail->Mailer = “smtp”;
$mail->Host = “ssl://smtp.gmail.com”;
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = “burmauy@gmail.com”; // SMTP username
$mail->Password = “burmaUY123456″; // SMTP password
Para finalizar se envia el correo, simplemente utilizamos la siguiente linea:
$mail->Send();
Si queremos controlar los errores podemos agregar la linea anterior dentro de un if:
if ($mail->Send())
echo “Enviado”;
else
echo “Error en el envio de mail”;
buenas noches, se que el articulo tiene tiempo, y quisiera aclarar una duda que tengo con el articulo y un ejecicio que realizo.
Necesito enviar un correo desde php y estoy usando esa clase phpmailer para ello. en las investigaciones que hice para poder desarrollar el ejercicio, me informe de que tengo que tener un programa que funcione como servidor de salida smtp, por lo cual tuve que instalar en mi pc uno llamado miniRelay.
Ok, lo instale, ejecuto el codigo del ejercicio pero cada vez me aparece un mensaje de que no se puede autenticar (SMTP Error: Could not authenticate.) y aun no se si es falla de mi servidor o de mi ejercicio. Por otra parte, en la consola del miniRelay me salen errores para envio de correos a hotmail. si me pueden orientar un poco acerca de esto lo agradezco mucho. solo deseo saber si la falla es de mi codigo, o del servidor o que otra cosa puede estar ocurriendo con la autentificacion.