Gmail SMTP relay no permitirá la conexión con PHPMailer

Para referencia, estoy usando PHPMailer 6+,php5.6, Mysql. Durante una semana, cada día, he estado tratando de enviar un simple correo electrónico de confirmación a mis clientes. Cada intento falla con este código ..

2020-12-17 03:16:09 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP l191sm2541398qke.7 - gsmtp
2020-12-17 03:16:09 CLIENT -> SERVER: EHLO mylocalstores.ca
2020-12-17 03:16:10 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [99.237.166.96]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
2020-12-17 03:16:10 CLIENT -> SERVER: AUTH LOGIN
2020-12-17 03:16:10 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2020-12-17 03:16:10 CLIENT -> SERVER: [credentials hidden]
2020-12-17 03:16:10 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2020-12-17 03:16:10 CLIENT -> SERVER: [credentials hidden]
2020-12-17 03:16:10 SERVER -> CLIENT: 535-5.7.8 Username and Password not accepted. Learn more at535 5.7.8 https://support.google.com/mail/?p=BadCredentials l191sm2541398qke.7 - gsmtp
2020-12-17 03:16:10 SMTP ERROR: Password command failed: 535-5.7.8 Username and Password not accepted. Learn more at535 5.7.8 https://support.google.com/mail/?p=BadCredentials l191sm2541398qke.7 - gsmtp
SMTP Error: Could not authenticate.
2020-12-17 03:16:10 CLIENT -> SERVER: QUIT
2020-12-17 03:16:10 SERVER -> CLIENT: 221 2.0.0 closing connection l191sm2541398qke.7 - gsmtp
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Mail FAIL.. SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Este es el código que solía enviar

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 2;

$mail->Host = 'smtp.gmail.com';
$mail->isSMTP();
$mail->SMTPAuth = true;

//gmail loggin
$mail->username = '[email protected]';
$mail->password = '*hidden*';

$mail->SMTPSecure = 'ssl';
$mail->Port = 465;

$mail->Subject = 'Test Email from me';
$mail->Body = '

Hello Gmail

'; $mail->setFrom("[email protected]","admin"); $mail->addAddress("[email protected]","user"); if($mail->Send()){ echo 'Mail Sent.. '; }else{ echo 'Mail FAIL.. '. $mail->ErrorInfo; }

Esto se está volviendo muy irritante. He probado un código de aplicación, reduciendo mi seguridad, permitiendo aplicaciones menos seguras. He comprobado mi IP contra las listas negras (sin banderas). Traté de usar 587/TLS nada parece funcionar. Tengo la parte de correo electrónico de mis dominios (tengo 12 sitios en mi servidor), o debo pagar extra por ello. Necesito que esto funcione. y sistema de registro completo depende del correo electrónico para confirmación y comunicación.

¿Hay otras opciones? No veo el punto de acoger mi propio servidor si no puedo enviar correos electrónicos. Los scripts de registro y la comunicación se hacen principalmente con el correo electrónico. Parece una situación de catch-22. De cualquier manera, pagarás más.

¿Necesito a SSL todo mi servidor? o mod-proxy... auto-sign... etc...

hMail server parece una opción... pero ¿cómo lucho el control de mi dirección de correo electrónico de Godaddy..

información, sugerencias o ayuda es muy apreciada.

Pregunta hecha hace 3 años, 4 meses, 28 días - Por codeglitch


2 Respuestas:

  • El error que estás experimentando indica que Gmail no está aceptando las credenciales de inicio de sesión que estás proporcionando en el código. Aquí te dejo algunas sugerencias para solucionar este problema:

    • Autenticación de Gmail: Asegúrate de que las credenciales de Gmail que estás proporcionando en el código son correctas. Debes usar tu dirección de correo electrónico completa de Gmail en lugar de solo el nombre de usuario.
    • Autenticación de dos factores: Si tienes la autenticación de dos factores habilitada en tu cuenta de Gmail, necesitarás generar una contraseña de aplicación y utilizarla en lugar de tu contraseña habitual. Puedes generar una contraseña de aplicación en la configuración de seguridad de tu cuenta de Google.
    • Puerto y Protocolo: En lugar de usar SSL y el puerto 465, intenta cambiar a TLS y el puerto 587 en tu configuración SMTP.
    • Actualización PHPMailer: Asegúrate de que estás utilizando la última versión de PHPMailer para garantizar la compatibilidad con las últimas configuraciones de seguridad de Gmail.
    • Activar acceso a aplicaciones menos seguras: En la configuración de seguridad de tu cuenta de Google, asegúrate de permitir el acceso de aplicaciones menos seguras. Esto puede ser una solución temporal, pero no es la opción más segura.
    • Considerar usar un servidor de correo: Si sigues teniendo problemas con Gmail, puedes considerar configurar un servidor de correo propio o utilizar un servicio de correo transaccional como SendGrid o Amazon SES.

    Espero que alguna de estas sugerencias te ayude a resolver el problema y puedas enviar correos electrónicos correctamente desde PHP usando Gmail SMTP relay.

    Respondida el Dec 18, 2020 a las 03:46 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Posibles soluciones:

    1. Verificar credenciales y permisos:

    Asegúrate de que estás utilizando la dirección de correo electrónico y la contraseña correctas de Gmail. Verifica que la cuenta de Gmail tenga permisos de "Aplicaciones menos seguras" habilitados.

    2. Ajustar la configuración de seguridad de Gmail:

    Visita https://myaccount.google.com/security, ve a "Acceso de aplicación y dispositivo" y habilita "Aplicaciones menos seguras". Asegúrate de que la autenticación de dos factores esté habilitada para tu cuenta de Gmail.

    3. Utilizar un puerto y TLS diferentes:

    Cambia el puerto a 587 y habilita TLS. $mail->Port = 587; $mail->SMTPSecure = 'tls';

    4. Verificar la lista negra de la IP:

    Utiliza una herramienta como mxtoolbox.com o spamhaus.org para verificar si la IP de tu servidor está en la lista negra. Si está en la lista negra, ponte en contacto con el proveedor de la lista negra para solicitar la eliminación.

    5. Revisar la configuración de DNS:

    Asegúrate de que los registros SPF y DKIM estén configurados correctamente para tu dominio. Esto ayuda a verificar la legitimidad de los correos electrónicos enviados desde tu servidor.

    6. Considerar un proveedor SMTP alternativo:

    Hay muchos proveedores SMTP de terceros disponibles, como Sendgrid, Mailgun y Amazon SES. Estos servicios ofrecen una alta confiabilidad y entrega.

    Información adicional:

    Alojar tu propio servidor de correo electrónico te brinda más control pero requiere mantenimiento y seguridad rigurosos. hMailServer es una opción gratuita y de código abierto, pero puede ser complejo de configurar. SSL es un protocolo de seguridad que cifra la comunicación entre tu servidor y Gmail. Es altamente recomendable habilitar SSL en tu servidor. * Mod-proxy y autofirma pueden ser soluciones para evitar las restricciones de SSL en algunos servidores. Sin embargo, son medidas de seguridad menos seguras.

    Respondida el Dec 18, 2020 a las 03:47 - por Gemini

    Votos positivos: 0 | Votos negativos: 0