Intento usar nodemailer para implementar un formulario de contacto usando NodeJS pero funciona solo en local, no funciona en un servidor remoto ...
Mi mensaje de error:
[website.fr-11 (out) 2013-11-09T15:40:26] { [AuthError: Invalid login - 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbvlX
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 V-dFQLgb7aRCYApxlOBuha5ESrQEbRXK0iVtOgBoYeARpm3cLZuUS_86kK7yPis7in3dGC
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 N1sqhr3D2IYxHAN3m7QLJGukwPSZVGyhz4nHUXv_ldo9QfqRydPhSvFp9lnev3YQryM5TX
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 XL1LZuJL7zCT5dywMVQyWqqg9_TCwbLonJnpezfBLvZwUyersknTP7L-VAAL6rhddMmp_r
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 A_5pRpA> Please log in via your web browser and then try again.
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 Learn more at https://support.google.com/mail/bin/answer.py?answer=787
[website.fr-11 (out) 2013-11-09T15:40:26] 534 5.7.14 54 fr4sm15630311wib.0 - gsmtp]
[website.fr-11 (out) 2013-11-09T15:40:26] name: 'AuthError',
[website.fr-11 (out) 2013-11-09T15:40:26] data: '534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbvlX\r\n534-5.7.14 V-dFQLgb7aRCYApxlOBuha5ESrQEbRXK0iVtOgBoYeARpm3cLZuUS_86kK7yPis7in3dGC\r\n534-5.7.14 N1sqhr3D2IYxHAN3m7QLJGukwPSZVGyhz4nHUXv_ldo9QfqRydPhSvFp9lnev3YQryM5TX\r\n534-5.7.14 XL1LZuJL7zCT5dywMVQyWqqg9_TCwbLonJnpezfBLvZwUyersknTP7L-VAAL6rhddMmp_r\r\n534-5.7.14 A_5pRpA> Please log in via your web browser and then try again.\r\n534-5.7.14 Learn more at https://support.google.com/mail/bin/answer.py?answer=787\r\n534 5.7.14 54 fr4sm15630311wib.0 - gsmtp',
[website.fr-11 (out) 2013-11-09T15:40:26] stage: 'auth' }
Mi controlador:
exports.contact = function(req, res){
var name = req.body.name;
var from = req.body.from;
var message = req.body.message;
var to = '*******@gmail.com';
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "******@gmail.com",
pass: "*****"
}
});
var mailOptions = {
from: from,
to: to,
subject: name+' | new message !',
text: message
}
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
}else{
res.redirect('/');
}
});
}
javascript
node.js
nodemailer
tonymx227
fuente
fuente
Respuestas:
Resolví esto yendo a la siguiente URL (mientras estaba conectado a Google con la cuenta desde la que quiero enviar correo):
https://www.google.com/settings/security/lesssecureapps
Allí habilité aplicaciones menos seguras.
Hecho
fuente
Consulte la guía oficial de nodemailer para conectar Gmail:
https://community.nodemailer.com/using-gmail/
-
Funciona para mí después de hacer esto:
fuente
Solución fácil:
Paso 1:
ve aquí https://myaccount.google.com/lesssecureapps y habilite las aplicaciones menos seguras. Si esto no funciona entonces
Paso 2
ve aquí https://accounts.google.com/DisplayUnlockCaptcha y habilite / continúe y luego intente.
Para mí, el paso 1 solo no funcionó, así que tuve que ir al paso 2.
También intenté eliminar el paquete nodemailer-smtp-transport y, para mi sorpresa, funciona. pero luego, cuando reinicié mi sistema, me dio el mismo error, así que tuve que ir y encender la aplicación menos segura (la deshabilité después de mi trabajo).
Luego, por diversión, lo probé con apagado (aplicación menos segura) y ¡funcionó de nuevo!
fuente
Debes usar un token XOAuth2 para conectarte a Gmail. No se preocupe, Nodemailer ya lo sabe:
Deberá ir a Google Cloud Console para registrar su aplicación. Luego, debe recuperar los tokens de acceso para las cuentas que desea usar. Puedes usar passportjs para eso.
Así es como se ve en mi código:
fuente
passport.authorize
es similar apassport.authenticate
excepto que no intenta actualizar la sesión actual. Debe aprobarcallbackURL
porque después del apretón de manos de OAuth, Google necesita saber dónde redirigir al usuario para que se complete el apretón de manos.Yo tuve el mismo problema. ¡Permitir "aplicaciones menos seguras" en mi configuración de seguridad de Google hizo que funcionara!
fuente
Funcionó bien:
1- instale nodemailer , paquete si no está instalado (escriba cmd):
npm install nodemailer
2- vaya a https://myaccount.google.com/lesssecureapps y active Permitir aplicaciones menos seguras .
3- escribir código:
4- ¡disfruta!
fuente
También me pasó el mismo problema. Probé mi sistema en localhost y luego lo implementé en el servidor (que se encuentra en un país diferente) y luego, cuando probé el sistema en el servidor de producción, vi este error. Probé estos para solucionarlo:
fuente
Para mí, está trabajando de esta manera, usando el puerto y la seguridad (tuve problemas para enviar correos electrónicos desde gmail usando PHP sin configuraciones de seguridad)
Espero ayudar a alguien.
todas las configuraciones se enumeran aquí (incluidos los ejemplos)
fuente
Ninguna de las soluciones anteriores funcionó para mí. Usé el código que existe en la documentación de NodeMailer . Se parece a esto:
fuente
Intente deshabilitar captchas en su cuenta de Gmail; probablemente se activa en función de la dirección IP del solicitante. Vea: Cómo usar GMail como un servidor SMTP gratuito y superar el captcha
fuente
Encontré el método más simple, descrito en este artículo mencionado en la respuesta de Greg T , era crear una contraseña de aplicación que está disponible después de activar 2FA para la cuenta.
myaccount.google.com> Inicio de sesión y seguridad> Iniciar sesión en Google> Contraseñas de aplicaciones
Esto le da una contraseña alternativa para la cuenta, luego configura nodemailer como un servicio SMTP normal.
Si bien Google recomienda Oauth2 como la mejor opción, este método es fácil y aún no se ha mencionado en esta pregunta.
Consejo adicional: también descubrí que puede agregar el nombre de su aplicación a la dirección "de" y GMail no lo reemplaza solo con el correo electrónico de la cuenta como lo hace si intenta usar otra dirección. es decir.
fuente
Se resuelve usando el
nodemailer-smtp-transport
módulo dentro de createTransport.fuente
Si usa Express, se
express-mailer
envuelvenodemailer
muy bien y es muy fácil de usar:fuente
todo su código está bien, solo lo que queda es solo ir al enlace https://myaccount.google.com/security
y siga desplazándose hacia abajo y encontrará Permitir aplicaciones menos seguras: ON y mantenga ON, no encontrará ningún error.
fuente
Simplemente agregue "host", funcionará.
Luego habilite "lesssecureapps" haciendo clic en el enlace de abajo
https://myaccount.google.com/lesssecureapps
fuente
Por alguna razón, solo permitir la configuración de la aplicación menos segura no funcionó para mí, incluso el captcha. Tuve que hacer otro paso que habilita la configuración de IMAP:
Desde la página de ayuda de Google: https://support.google.com/mail/answer/7126229?p=WebLoginRequired&visit_id=1-636691283281086184-1917832285&rd=3#cantsignin
fuente
Debe agregar el tipo de conexión segura en su código.
fuente
Estaba usando una versión anterior de nodemailer 0.4.1 y tuve este problema. Actualicé a 0.5.15 y todo está funcionando bien ahora.
Paquete.json editado para reflejar los cambios luego
fuente
Solo asista a los siguientes: 1- La autenticación de Gmail para permitir correos electrónicos de bajo nivel no acepta antes de reiniciar el navegador de su cliente 2- Si desea enviar un correo electrónico con nodemailer y no desea usar el protocolo xouath2 allí, debe escribir como conexión segura: falso como a continuación
fuente
primera instalación de nodemailer
importar al archivo js
trabajando en mi aplicación
fuente