J'essaie d'utiliser nodemailer pour implémenter un formulaire de contact en utilisant NodeJS mais cela ne fonctionne qu'en local, cela ne fonctionne pas sur un serveur distant ...
Mon message d'erreur:
[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' }
Mon contrôleur:
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
la source
la source
Réponses:
J'ai résolu ce problème en accédant à l'url suivante (en étant connecté à google avec le compte à partir duquel je souhaite envoyer des e-mails):
https://www.google.com/settings/security/lesssecureapps
Là, j'ai activé des applications moins sécurisées.
Terminé
la source
Consultez le guide officiel de nodemailer sur la connexion à Gmail:
https://community.nodemailer.com/using-gmail/
-
Cela fonctionne pour moi après avoir fait ceci:
la source
Solution facile:
Étape 1:
allez ici https://myaccount.google.com/lesssecureapps et activez les applications moins sécurisées. Si cela ne fonctionne pas,
Étape 2
allez ici https://accounts.google.com/DisplayUnlockCaptcha et activez / continuez puis essayez.
pour moi, l'étape 1 seule n'a pas fonctionné, j'ai donc dû passer à l'étape 2.
J'ai également essayé de supprimer le paquet nodemailer-smtp-transport et à ma grande surprise, cela fonctionne. mais quand j'ai redémarré mon système, cela m'a donné la même erreur, alors j'ai dû activer l'application la moins sécurisée (je l'ai désactivée après mon travail).
puis pour le plaisir, je viens de l'essayer sans (application moins sécurisée) et vola cela a fonctionné à nouveau!
la source
Vous devez utiliser un jeton XOAuth2 pour vous connecter à Gmail. Pas de soucis, Nodemailer le sait déjà:
Vous devrez accéder à la console Google Cloud pour enregistrer votre application. Ensuite, vous devez récupérer les jetons d'accès pour les comptes que vous souhaitez utiliser. Vous pouvez utiliser passeportjs pour cela.
Voici à quoi cela ressemble dans mon code:
la source
passport.authorize
est similaire àpassport.authenticate
sauf qu'il ne tente pas de mettre à jour la session en cours. Vous devez réussircallbackURL
car après la poignée de main OAuth, Google a besoin de savoir où rediriger l'utilisateur afin que la poignée de main soit terminée.J'ai eu le même problème. Autoriser les "applications moins sécurisées" dans mes paramètres de sécurité Google a permis de le faire fonctionner!
la source
A bien fonctionné:
1- installer nodemailer , package s'il n'est pas installé (tapez cmd):
npm install nodemailer
2- Accédez à https://myaccount.google.com/lesssecureapps et activez Autoriser les applications moins sécurisées .
3- écrire du code:
4- profitez-en!
la source
Le même problème m'est arrivé aussi. J'ai testé mon système sur localhost puis déployé sur le serveur (qui est situé dans un pays différent), puis lorsque j'essaye le système sur le serveur de production, j'ai vu cette erreur. J'ai essayé ceux-ci pour le réparer:
la source
Pour moi, cela fonctionne de cette façon, en utilisant le port et la sécurité (j'ai eu des problèmes pour envoyer des e-mails à partir de gmail en utilisant PHP sans paramètres de sécurité)
J'espère aidera quelqu'un.
toutes les config sont listées ici (y compris des exemples)
la source
Aucune des solutions ci-dessus n'a fonctionné pour moi. J'ai utilisé le code qui existe dans la documentation de NodeMailer . Cela ressemble à ceci:
la source
Essayez de désactiver les captchas dans votre compte Gmail; étant probablement déclenché en fonction de l'adresse IP du demandeur. Voir: Comment utiliser GMail en tant que serveur SMTP gratuit et surmonter le captcha
la source
J'ai trouvé que la méthode la plus simple, décrite dans cet article mentionné dans la réponse de Greg T , était de créer un mot de passe d'application disponible après l'activation de 2FA pour le compte.
myaccount.google.com> Connexion et sécurité> Connexion à Google> Mots de passe d'application
Cela vous donne un mot de passe alternatif pour le compte, puis vous configurez simplement nodemailer en tant que service SMTP normal.
Bien que Google recommande Oauth2 comme la meilleure option, cette méthode est simple et n'a pas encore été mentionnée dans cette question.
Conseil supplémentaire: j'ai également trouvé que vous pouvez ajouter le nom de votre application à l'adresse «de» et GMail ne le remplace pas uniquement par l'adresse e-mail du compte, comme il le fait si vous essayez d'utiliser une autre adresse. c'est à dire.
la source
Il est résolu en utilisant le
nodemailer-smtp-transport
module dans createTransport.la source
Si vous utilisez Express,
express-mailer
s'enroulenodemailer
très bien et est très facile à utiliser:la source
tout votre code est correct, il ne vous reste que le lien https://myaccount.google.com/security
et continuez à faire défiler vers le bas et vous trouverez Autoriser les applications moins sécurisées: ON et continuer, vous ne trouverez aucune erreur.
la source
Ajoutez simplement "hôte", cela fonctionnera.
Puis activez "lesssecureapps" en cliquant sur le lien ci-dessous
https://myaccount.google.com/lesssecureapps
la source
Pour une raison quelconque, le simple fait d'autoriser une configuration d'application moins sécurisée ne fonctionnait pas pour moi, même le captcha. J'ai dû faire une autre étape qui consiste à activer la configuration IMAP:
Depuis la page d'aide de Google: https://support.google.com/mail/answer/7126229?p=WebLoginRequired&visit_id=1-636691283281086184-1917832285&rd=3#cantsignin
la source
Vous devez ajouter le type secureConnection dans votre code.
la source
J'utilisais une ancienne version de nodemailer 0.4.1 et j'avais ce problème. J'ai mis à jour à 0.5.15 et tout fonctionne bien maintenant.
Package.json édité pour refléter les changements ensuite
la source
Assistez simplement à ceux-ci: 1- L'authentification Gmail pour autoriser les e-mails de bas niveau n'accepte pas avant de redémarrer votre navigateur client 2- Si vous souhaitez envoyer un e-mail avec nodemailer et que vous ne souhaitez pas utiliser le protocole xouath2, vous devez écrire comme secureconnection: false comme ci-dessous
la source
installez d'abord nodemailer
importer dans un fichier js
travaillant dans mon application
la source