Hola usuario de nuestra página, hemos encontrado la respuesta a tu interrogante, continúa leyendo y la obtendrás un poco más abajo.
Solución:
Tu error dice:
SMTP ERROR: Failed to connect to server: Connection timed out (110)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Así que echemos un vistazo a https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting:
“Error SMTP: no se pudo conectar con el host SMTP”.
Esto también puede aparecer como conexión SMTP () fallida o Correo llamado () sin estar conectado en la salida de depuración. Esto a menudo se informa como un problema de PHPMailer, pero casi siempre se debe a una falla del DNS local, al bloqueo del firewall (por ejemplo, como lo hace GoDaddy) u otro problema en su red local. Significa que PHPMailer no puede comunicarse con el servidor SMTP que ha especificado en la propiedad Host, pero no dice exactamente por qué. También puede deberse a que no se ha cargado la extensión openssl (consulte las notas de cifrado a continuación).
Algunas técnicas para diagnosticar el origen de este error se analizan a continuación.
Ve papi
El popular proveedor de alojamiento de EE. UU. GoDaddy impone restricciones muy estrictas (hasta el punto de volverse casi inútiles) al envío de correo electrónico. Bloquean SMTP saliente a los puertos 25, 465 y 587 a todos los servidores excepto al suyo. Este problema es objeto de muchas preguntas frustrantes en Stack Overflow. Si encuentra que su script funciona en su máquina local, pero no cuando lo carga en GoDaddy, esto será lo que le ocurrirá. La solución está muy mal documentada por GoDaddy: debe enviar a través de sus servidores y también deshabilitar todas las funciones de seguridad, nombre de usuario y contraseña (genial, ¿eh?), Lo que le brinda esta configuración para PHPMailer:
$mail->isSMTP(); $mail->Host = 'relay-hosting.secureserver.net'; $mail->Port = 25; $mail->SMTPAuth = false; $mail->SMTPSecure = false;
GoDaddy también se niega a enviar con una dirección de remitente que pertenezca a cualquier dominio aol, gmail, yahoo, hotmail, live, aim o msn (consulte sus documentos). Esto se debe a que todos esos dominios implementan medidas anti-falsificación SPF y DKIM, y falsificar su dirección de origen es una falsificación.
Puede que le resulte más fácil cambiar a un proveedor de alojamiento más inteligente.
El problema – más bien el dos problemas no relacionados – que estás experimentando son bastante sencillos:
ERROR SMTP: No se pudo conectar al servidor: Se agotó el tiempo de espera de la conexión (110) Fallo en la conexión SMTP ().
y ha verificado que el servidor está aceptando conexiones:
Intenté conectarme al servidor SMTP usando el comando telnet
Last login: Fri Sep 16 11:08:06 on ttys000
admin:~ admin$ telnet mail.example.in 25
Trying 111.91.153.112...
Connected to mail.example.in.
Su secuencia de comandos no se puede conectar al servidor SMTP cuando se ejecuta desde su servidor de producción.
La causa probable es que el servidor de producción dispone de un cortafuegos que, para evitar abusos, impide cualquier conexión con el exterior. El servidor puede atender Solicitudes web, pero no más.
Si su prueba hubiera verificado que el puerto 25 no respondía, luego (después de verificar que la dirección de host era correcta) podría haber intentado telnet mail.example.in 587 en lugar de. Si eso funcionó, podría haber significado que el servidor no acepta conexiones inseguras (puerto 25) pero acepta conexiones seguras. Con PHPMailer, podría haber intentado activar la conexión segura:
$mail->SMTPSecure = 'tls';
o
$mail->SMTPSecure = 'ssl';
Si eso no funciona, es posible que aún tenga un problema de firewall; o puede que necesites mirar phpinfo()
y verifique que tenga soporte OpenSSL disponible en PHP.
Qué necesitas hacer
- solicite al personal de TI que mantiene el servidor de producción que abra el firewall;
- más prometedor, pregúntales cómo enviar correos electrónicos desde ese servidor. Lo más probable es que necesite utilizar el
mail()
función, o usolocalhost
o127.0.0.1
como servidor SMTP. Luego, los correos electrónicos se enviarán a través de la red de servicio de su servidor de producción.
Es posible que le digan que el puerto 25 no está permitido, pero sí se permitiría el puerto (digamos) 465 o 567. Deberá actualizar su configuración y / o agregar TLS / SSL en consecuencia (ver arriba).
- o es posible que se le permita conectarse a un servidor SMTP de terceros, del cual tendrá que proporcionar la dirección IP, para permitir que los técnicos de TI abran una ventana de firewall adecuada. Luego, los correos electrónicos se enviarán a través del servidor de terceros.
El segundo problema (posiblemente NO sea un problema)
250 [email protected] Remitente OK RCPT para: [email protected]
554 Retransmisión rechazada por motivos de política
También para evitar abusos, Servidores SMTP no permitirá que todos se conecten y envíen correos electrónicos, sino solo a sus propios clientes. Veo que en la configuración de PHPMailer especificó un usuario y una contraseña. En la sesión de telnet no lo hizo. Así que bien podría ser que PHPmailer pudiera enviar, pero no conectarse, mientras que su telnet puede conectarse, pero no enviar.
Una vez que resuelva el problema de conexión, su problema de autenticación se resolverá o desaparecerá (porque utilizará un servidor diferente que le proporcionaron los técnicos de TI, por ejemplo localhost
).
El tercer problema (puede que nunca surja)
Una tercera forma de abusar de los servicios es uso excesivo – enviar demasiados correos electrónicos a demasiadas personas. Verifique con los técnicos de TI cuáles son las políticas aceptables para el envío de correos electrónicos.
Problemas, problemas
Otras cosas a tener en cuenta son las credibilidad de la fuente (es posible que desee enviar correos electrónicos en nombre de algún dominio que no haya designado su servidor SMTP de elección como remitente permitido), y el confidencialidad de los datos (incluso con conexiones TLS / SSL, si se le proporciona localhost
como servidor SMTP, sus técnicos de TI tendrán acceso completo, sin restricciones e indetectable a cualquier correo electrónico que envíe. Puede, o no, estar de acuerdo con eso).