Situación:
- Tenemos nuestro propio Servidor Ubuntu Server con LAMP (PHP7 + Apache2 + MySQL) + PhpMyAdmin
- Hemos programado una plataforma donde se envían emails a través de SMTP, y no funciona.
- Probamos la misma plataforma en un Servidor XAMPP bajo Windows o en un Servidor Externo y sí funciona.
Mensaje que aparece: eMail error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
El problema viene definido a que el LAMP que hemos instalado en nuestro Ubuntu Server no tiene instalada/habilitada la función para poder enviar emails por SMTP.
Con esta solución, solo hemos conseguido enviar emails pero sin archivos adjuntos:
Instalamos el paquete ssmtp:
sudo apt-get install ssmtp -y
Editamos el archivo ssmtp.conf:
sudo nano /etc/ssmtp/ssmtp.conf
Añadimos:
mailhub=smtp.server.com:587 nuestro.servidor.com:NumPuerto UseSTARTTLS=YES En caso de utilizar Seguridad TLS, ponemos YES, si no, NO AuthUser=user@server.com Usuario del Correo AuthPass=pas$$word1234 Contraseña del correo
Guardamos y salimos.
Editamos el archivo php.ini para asignar la variable sendmail_path, ojo depende de la versión de PHP instalada tenemos el archivo en diferentes ubicaciones:
Para PHP5
sudo nano /etc/php5/apache2/php.ini
Para PHP7
sudo nano /etc/php/7.0/apache2/php.ini
En la linea sendmail_path hay que ponerla así:
sendmail_path = /usr/sbin/ssmtp -t
Guardamos y salimos.
Reiniciamos el servidor apache:
sudo /etc/init.d/apache2 restart
Ahora el problema de enviar ya no existe, pero nos encotramos con dos cosas más:
- La codificación del email no parece ser UTF-8 Spanish_ci: Actualizado: Definir el CharSet a UTF-8
ejemplo: $mail ->CharSet = 'UTF-8';
- No se adjuntan los archivos: Actualizado: estábamos enviando un valor NULL en un campo integuer, y el sistema no devolvía ningún error. En algunos servidores como el XAMPP, el PHPmyAdmin, es menos restrictivo que un servidor instalado desde el principio, y lo que pasaba es que el adjunto sí se subia al servidor, pero luego no guardaba la ruta en la tabla. Enviado un valor 0, ya funciona todo correctamente y no tenía nada que ver con el servidor SSMTP.
