Enviar mails con PHPMailer

¿Quieres enviar un mail desde una página de php? Ya sea al usuario, al administrador… la idea es que tu web sea capaz de enviar correos a una dirección de e-mail. Aunque existe la función mail() en php, desde hace tiempo la opción más utilizada es la clase PHPMailer que puedes descargar desde aquí.

Una vez descargado la cuestión es ¿cómo hago para enviar un correo? Bueno, todo es cuestión de configurar un script tal que así:

/*Lo primero es incluir la clase en vuestro php*/
include("metedLaRutaDondePusisteisLaCarpeta/class.phpmailer.php");

/*Obviamente, generáis el mensaje*/
$mensaje="Blablablablabla********"; //puede incluir html, podéis cogerlo de un form...

/*Ahora toca crear una variable de la clase phpmailer*/
$NewMail=new PHPMailer();

/*Y luego añadís todos los parámetros que esta necesita para el envío*/
$NewMail->Host = "localhost"; //El host donde tengáis alojado el correo
$NewMail->From = "correo@del.remitente"; //El correo del remitente
$NewMail->FromName = "Nombre remitente"; //Nombre del remitente
$NewMail->Subject = "asunto"; //El asunto del correo
$NewMail->AddAddress("emailalqueseenvía@asdsd.com","Nombre");//La dirección del receptor del mail
$NewMail->Body = $mensaje; //El mensaje
$NewMail->AltBody = "Relleno Relleno; //relleno

/*Y finalmente llamáis al método de envío*/
$NewMail->Send();

Hay más opciones de configuración, pero esto es lo básico. Entre otras cosas podéis configurar el protocolo de envío (POP, SMTP…), etc… pero con esto pelao debería ir funcionando. Si no, buscáis la documentación y ya profundizáis.

Instalar LAPP en Debian (Apache/PHP/Postgres)

En fin, con esto ya está instalado el servidor y el PHP, y además iniciado el servicio de Apache para que puedas testear el funcionamiento de la instalación. El siguiente paso será la instalación de PostgreSQL 9.1 que, de momento, no está incluída en los repositorios oficiales de Debian (donde todavía está la 8.4), por lo que habrá que tirar del repositorio Debiak-Backports, donde tienen las últimas de versiones de software para Debian. Basta con añadir la línea deb squeeze-backports main en el fichero /etc/apt/sources.list y listo, ya tienes el repositorio disponible. Con esto ya sólo tenemos que actualizar repositorios e instalar tal que así:

$sudo apt-get update
$sudo apt-get -t squeeze-backports install postgresql-9.13.1

Ahora será el momento de configurar la contraseña de Postgres. Primero hemos de asumir la identidad del usuario postgres. A continuación, accedemos al cliente de linea de ordenes de PostgreSQL.Una vez dentro, cambiamos el password. Todo esto como en el ejemplo de código:

$sudo su postgres
$psql
postgres=# alter user postgres with password ‘passwd’;

El sistema debe responder con un:ALTER ROLE postgres=# Salimos del cliente de linea de ordenes con la orden:postgres=#\q Y salimos de la cuenta en el sistema del usuario postgres con un simple:$exit

Por defecto, PostgreSQL sólo atiende peticiones provenientes de la máquina local. Si estamos configurando un servidor remoto, deberemos habilitar el acceso desde otras IPs. Debemos editar el fichero /etc/postgresql/9.1/main/postgresql.conf. Busca la línea #listen-address = ‘localhost’ la copiala debajo, la descoméntala y modifícala. Si queremos poermitir el acceso de todas las IP habría que poner listen-address = ‘*’ mientras que si queremos utilizar varias IP concretas sólo tenemos que pasarle las direcciones, separadas por comas tipo listen-address = ‘192.168.0.6,192.168.0.8’

Tras esto lo primero que hay que hacer es dar ciertos permisos locales, dado que Postgres es muy restrictivo en esto en su instalación por defecto. Hay que editar el fichero /etc/postgresql/9.1/main/pg_hba.conf. Busca la línea local all postgres peer y cámbiala por local all postgres md5 con lo que permitimos al usuario postgres conectarse desde la maquina local, usando una contraseña encriptada con md5.Lo siguiente es acceso a cualquier cuenta de usuario desde la maquina local siempre que se especifique una contraseña encriptada mediante md5.Busca la línea cuyo contenido es:local all all peer y cámbialo por local all all md5, con lo que ya estará.

Finalmente debemos configurar los permisos de acceso remoto. Se trata de tratar las siguientes cuestiones:¿Qué usuarios tienen permiso para conectarse?¿Desde qué IPs lo pueden hacer?¿A qué bases de datos?¿Qué método de auteticación usarán?. Eso ya lo dejo en tus manos y tienes varios tutoriales sobre cómo hacerlo por la red adelante. También puedes probar siriviéndote de la ayuda del sistema, el fichero donde se dan los permisos es /etc/postgresql/9.1/main/pg_hba.conf

Para permitir el subir y bajar archivos de forma remota, finalmente, debemos instalar un servidor FTP, en este caso ProFTP. Requiere un poco de configuración tras la instalación:

$sudo apt-get install proftpd

Durante la instalación nos preguntará qué modo de funcionamiento queremos elegir, en este caso standalone. Luego habrá que configurar el servidor para que el directorio raíz del servidor FTP sea el mismo que el directorio raíz del servidor web, permitiendo de esa forma subir y bajar los archivos publicados en Apache. Hay que modificar el fichero /etc/proftpd.conf y añadir

<global>
  DefaultRoot /var/www
   var/www >
     All> AllowAll
   </directory>
</global>

Finalmente reiniciamos el servidor para que todos los servicios estén arrancados, y ya podemos probar todo el funcionamiento.