11484 sujets

JavaScript, DOM et API Web HTML5

Bonjour a tous

J'essaye d'envoyer un mail via un formulaire de contact avec node js.

Mallheureusement j'obtient cette erreur dans mon IDE

{ Error: Invalid login: 550 5.7.0 Mot de passe invalide. Verifiez ou reinitialisez votre mot de passe sur orange.fr :
 http://assistance.orange.fr/oid/78554#onglet3  [305]
at SMTPConnection._formatError (/home/nomdefamille/sites/labo/nodecontactform/node_modules/nodemailer/lib/smtp-connec
tion/index.js:591:19)
at SMTPConnection._actionAUTHComplete (/home/nomdefamille/sites/labo/nodecontactform/node_modules/nodemailer/lib/smtp
-connection/index.js:1320:34)

at SMTPConnection._responseActions.push.str (/home/nom defamille/sites/labo/nodecontactform/node_modules/nodemailer/li
b/smtp-connection/index.js:356:26)
at SMTPConnection._processResponse (/home/nomdefamille/sites/labo/nodecontactform/node_modules/nodemailer/lib/smtp-co
nnection/index.js:747:20)
at SMTPConnection._onData (/home/nomdefamillesites/labo/nodecontactform/node_modules/nodemailer/lib/smtp-connection/
index.js:543:14)
at Socket._socket.on.chunk (/home/nomdefamille/sites/labo/nodecontactform/node_modules/nodemailer/lib/smtp-connection
/index.js:495:47)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
code: 'EAUTH',
response: '550 5.7.0 Mot de passe invalide. Verifiez ou reinitialisez votre mot de passe sur orange.fr :  http://ass
 
istance.orange.fr/oid/78554#onglet3 [305]',
responseCode: 550,
command: 'AUTH PLAIN' }



Mon code

const express = require('express'); //framework js
const bodyParser = require('body-parser'); //récuperer la data soumise avec HTTP POST
const exphbs = require('express-handlebars'); // template
const path = require('path');
const nodemailer = require('nodemailer'); // va chercher nodemailer

//----------------------------------------------------------------------------//

const app = express(); //Pour utiliser express via app

//View engine setup
app.engine('handlebars', exphbs()); // use template
app.set('view engine', 'handlebars'); // name view engine value handlebars

// Static folder
app.use('/public', express.static(path.join(__dirname, 'public'))); // This is a built-in middleware function in Express. It serves static files and is based on serve-static.


// Body parser Middleware
app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(bodyParser.json());

app.get('/', (req, res) => {

  res.render('contact');

}); // Une requete via le get avec une rep

app.post('/send', (req, rep) => {
  const output = `
      <p>You have a new contact<p/>
      <h3>Contact Details</h3>
      <ul>
              <li>Name: ${req.body.name}</li>
                <li>Company: ${req.body.company}</li>
                  <li>Email: ${req.body.email}</li>
                    <li>Phone: ${req.body.phone}</li>
      </ul>
      <h3>Message</h3>
      <p>${req.body.message}</p>
     `;
  // create reusable transporter object using the default SMTP transport
  let transporter = nodemailer.createTransport({
    host: 'smtp.orange.fr',
    port: 25,
    secure: false, // true for 465, false for other ports
    auth: {
      user: 'monadressegmail', // generated ethereal user
      pass: 'monmotdepassegmail' // generated ethereal password
    },
    tls: {
      rejectUnauthorized:false
    }
  });

  // setup email data with unicode symbols
  let mailOptions = {
    from: '"Nodemailer contact" <test@traversymedia.com>', // sender address
    to: 'monadressemail', // list of receivers
    subject: 'Node Contact Request', // Subject line
    text: 'Hello world?', // plain text body
    html: output // html body
  };

  // send mail with defined transport object
  transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
      return console.log(error);
    }
    console.log('Message sent: %s', info.messageId);
    console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));

    res.render('contact', {msg:'Email has been sent'});
  });
});

app.listen(3000, () => console.log('Server started')); // ecoute via port 3000


J'ai beau décortiquer mon code , je ne comprend pas d'ou viens mon erreur Smiley biggol

Surtout que j'utilise mon adresse gmail et pas orange donc je ne comprend pas cette erreur de mot de passe Smiley sweatdrop
Modifié par lerusse (28 Feb 2018 - 11:00)
Bonjour

Je ne connais pas via node, mais en revanche niveau smtp ça va Smiley smile

le serveur smtp est dépendant de l'hébergeur ou de ton local Smiley cligne
Je suppose que ta box locale est une Orange Smiley cligne

ilf aut donc que tu donne quelque part dans ton code le login et mot de passe du smtp de ta box orange Smiley smile

pense bien sur qu'une foi sdéployé cela sera différent Smiley smile et dépendant du serveur qui va envoyer.
j'ai changer en mettant

let transporter = nodemailer.createTransport({
    host: 'smtp.orange.fr',
    port: 25,
    secure: false, // true for 465, false for other ports
    auth: {
      user: 'ladresse mail orange', // generated ethereal user
      pass: 'le mot de passe ' // generated ethereal password
    },
    tls: {
      rejectUnauthorized:false
    }
  });



resultat

Server started
Message sent: <789fc2d0-8ef2-9314-559b-cb08ff468cfd@gmail.com>
Preview URL: false

Smiley eek

et je n'ai recu aucun mail bien sur Smiley biggol

Ce que je me demande c'est si j'ai bien rempli cette partie

  // setup email data with unicode symbols
  let mailOptions = {
    from: '"Nodemailer contact" <[b]ici je ne sais pas quoi mettre [/b]>', // sender address
    to: 'ici j'ai mis mon email gmail ', // list of receivers
    subject: 'Node Contact Request', // Subject line
    text: 'Hello world?', // plain text body
    html: output // html body
  };

Modifié par lerusse (28 Feb 2018 - 13:49)
le from correspond à l'adresse qui envoi le mail. Cette adresse doit être connue au niveau du serveur SMTP, ou tout au moins son domaine.
Si tu envoi avec orange ela peut ressembler à ceci
from: '"Nodemailer contact" <contact@orange.fr>', // sender address

plus exactement l'adresse mail orange avec laquelle tu as fait la connexion Smiley smile

Comme je ne connais pas la destination finale de ton code difficile de t'en dire plus Smiley smile
serveur web ? apk ? localhost ?
Oui localhost Smiley biggrin


Bon pour l'instant ca marche je recois bien le mail Smiley langue

Le seul souci c'est que ma page en localhost tourne a vide aprés lenvoie du mail Smiley biggol

Server started
Message sent: <8b3ead81-edde-7717-51a2-f1f6f334ddca@orange.fr>
Preview URL: false


Je devrais avoir mon message " email envoyé" Smiley confused