2 votes

Envoi de courrier avec pièces jointes et données html en utilisant nodemailer

Le problème que j'ai rencontré est que je ne peux envoyer qu'un e-mail avec des pièces jointes OU des données de modèle, mais je n'ai pas trouvé de moyen d'envoyer les deux.

Voici mon code :

var EmailTemplate = require('email-templates').EmailTemplate;
var template = new EmailTemplate('templates/welcome');
template.render({}, function(err, results) {
  var send = transporter.templateSender({
    from: '',
    html: results.html,
    attachments: [{
      filename: 'file1.png',
      path: 'templates/file1.png',
      cid: 'file1'
    }, {
      filename: 'file2.png',
      path: 'templates/file2.png',
      cid: 'file2'
    }]
  });

  send({
    to: String(user.emailAddress),
    subject: 'Bienvenue sur notre site!'
  }, {name: user.firstName}, callback);
});

Si je le fais de la manière indiquée ci-dessus, la variable de modèle de nom est rendue, mais les images ne s'affichent pas. Si je fais plutôt

var send = transporter.templateSender(template, ...

alors les pièces jointes sont rendues, mais pas la variable de modèle.

Je sais que je pourrais utiliser un package de templating comme Jade ou Handlebars pour ce genre de chose, mais cela semble excessif quand nodemailer a toute la fonctionnalité dont j'ai besoin.

Toute aide serait appréciée. Merci!

1voto

roneo Points 799

J'ai fait exactement la même chose et j'ai gaspillé mes précieuses 4 heures à résoudre cela juste avant le lancement.. Mais j'ai finalement trouvé la réponse à cela.

L'endroit où placer les pièces jointes est dans la partie send() plutôt que templateSender(), donc le code devrait ressembler à ceci:

send({
    to: String(user.emailAddress),
    subject: 'Bienvenue sur notre site!',
    attachments:[{
      filename: 'fichier1.png',
      path: 'templates/fichier1.png',
      cid: 'fichier1'
    }, {
      filename: 'fichier2.png',
      path: 'templates/fichier2.png',
      cid: 'fichier2'
    }]
  }, {nom: user.firstName}, rappel);

J'espère que cela aidera quelqu'un!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X