J'essaie d'envoyer un courrier électronique en météorite avec process.env et smtp gmail

J'utilise ce qui suit pour envoyer des emails qui fonctionnent sur localhost mais pas sur mon serveur.

// server Meteor.startup(function () { process.env.MAIL_URL="smtp://uername%40gmail.com:[email protected]:465/"; }); 

Je reçois l'erreur suivante dans mes journaux (il semble que Google bloque le pour une raison quelconque, y at -il un moyen de l'arrêter?

 [162.243.52.235] 534-5.7.14 Learn more at 534 5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 l10sm1017845qae.41 - gsmtp at SMTPClient._actionAUTHComplete (/opt/meteor/app/programs/server/npm/email/main/node_modules/simplesmtp/lib/client.js:826:23) at SMTPClient._onData (/opt/meteor/app/programs/server/npm/email/main/node_modules/simplesmtp/lib/client.js:329:29) at CleartextStream.EventEmitter.emit (events.js:95:17) at CleartextStream.<anonymous> (_stream_readable.js:746:14) at CleartextStream.EventEmitter.emit (events.js:92:17) at emitReadable_ (_stream_readable.js:408:10) at _stream_readable.js:401:7 at process._tickCallback (node.js:415:13) 

C'est l'événement que je pense envoyer envoye l'envoi de courrier électronique. Je sais que le météore est maintenant configuré pour utiliser l'enrouleur de courrier, est-ce qu'il y a un moyen de modifier cela pour simplement utiliser l'arme à lettres au lieu de la météorite sans process.env?

 Template.forgotPassword.events({ 'submit #forgotPasswordForm': function(e, t) { e.preventDefault(); var forgotPasswordForm = $(e.currentTarget), email = trimInput(forgotPasswordForm.find('#forgotPasswordEmail').val().toLowerCase()); if (isNotEmpty(email) && isEmail(email)) { Accounts.forgotPassword({email: email}, function(err) { if (err) { if (err.message === 'User not found [403]') { Session.set('alert', 'This email does not exist.'); } else { Session.set('alert', 'We\'re sorry but something went wrong.'); } } else { Session.set('alert', 'Email Sent. Please check your mailbox to reset your password.'); } }); } return false; }, 'click #returnToSignIn': function(e, t) { Session.set('showForgotPassword', null); return false; }, }); 

Paquets déjà installés

Entrez la description de l'image ici

Vous devez coder sur votre nom d'utilisateur et mot de passe. Meteor confond les deux signes '@' les uns avec les autres.

Vous pouvez le faire dans votre console JS (avec encodeURIComponent(username) ) et encodeURIComponent(username) généralement avec quelque chose comme

 user%40gmail.com:[email protected]:465 

Vous pouvez utiliser Mailgun de la même manière, ou Mandrill, ou tout autre fournisseur de smtp. C'est juste le format de nom d'utilisateur qui cause les problèmes.

J'ai rencontré un problème similaire. La méthode d'envoi de courrier électronique fonctionne localement mais pas sur le module d'hébergement. Pour ma part, cela était dû à un blocage de la sécurité de Google (l'accès à mon compte Gmail de Seattle alors que je vis en France a probablement semblé pire à Google). J'ai parcouru plusieurs pages pour autoriser des connexions moins strictes à mon compte Gmail. Sur cette page, j'ai vu le blocage. J'ai donc permis les applications moins sécurisées et l' accès autorisé à mon compte .

Si cela aide quelqu'un …

Utilisez simplement le paquet de courrier électronique avec

meteor add email

Ensuite, l'envoi de courrier électronique fonctionnera. Le mien fonctionne avec le port 587 dans ma configuration.

 Meteor.startup(function () { process.env.MAIL_URL = 'smtp://user%40gmail.com:[email protected]:587'; });