Cuando desarrollamos en PHP desde un sistema GNU/Linux usando la versión desktop y queremos enviar emails con la función mail() de PHP, vemos que ningún correo llega al destinatario. En este pequeño tutorial, se enseña cómo configurar msmtp para que actúe como relay de salida de correo y podamos enviar desde localhost tantos correos como queramos, usando la configuración de una cuenta de correo electrónico existente.
1- instalamos msmtp
Instalamos msmtp y ca-certificates para ser usado con SSL:
sudo apt-get install msmtp ca-certificates
creamos y editamos el fichero /etc/msmtprc:
sudo nano /etc/msmtprc
dentro de el, añadimos:
defaults tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt account default host smtp.gmail.com port 587 auth on user usuario@gmail.com password micontrasenya from usuario@gmail.com logfile /var/log/msmtp.log
y reemplazamos los campos user y password.
damos permisos de ejecución al fichero creado:
sudo chmod 0644 /etc/msmtprc
enviamos u email de prueba a destinatario@gmail.com:
echo -e "Subject: Email de prueba\r\n\r\nEsto es un email de prueba" |msmtp --debug --from=default -t destinatario@gmail.com
2- lo integramos con PHP y Apache
el siguiente paso es configurar PHP para que use msmtp como sendmail, para ello editamos el fichero php.ini:
sudo nano /etc/php5/apache2/php.ini
buscamos ‘sendmail_path‘ y lo reemplazamos por:
sendmail_path = '/usr/bin/msmtp -t'
reiniciamos apache:
sudo service apache2 restart
y podemos enviar un email de prueba desde un fichero PHP correo.php:
<?php mail ( 'destinatario@gmail.com', 'Prueba de email desde PHP', 'Funciona bien eh...');
ahora lo ejecutamos:
php correo.php
Últimos comentarios