2016-07-12 7 views
0

Ich sende eine E-Mail in node.js mit dem Knotenmodul. Ich habe eine Reihe von Objekten, die ich in eine CSV-Datei umwandeln und an die E-Mail anhängen möchte. Ich kann erfolgreich eine E-Mail senden, aber der CSV-Anhang wird nicht richtig ausgefüllt (wird als leer angezeigt). Mein Code sieht ähnlich dem folgendennode.js Nodemailer Array von Objekten zu CSV-Datei als Anhang in E-Mail

var nodemailer = require('nodemailer'); 

// create reusable transporter object using SMTP transport 
    var transporter = nodemailer.createTransport({ 
    service: 'Gmail', 
    auth: { 
     user: '[email protected]', 
     pass: 'userpass' 
    } 
}); 

var data = [{age:24,name:"bob"},{age:35,name:"andy"},...]; 

var mailOptions = { 
    from: '[email protected]', // sender address 
    to: '[email protected]', //receiver 
    subject: 'Hello', // Subject line 
    text: 'Hello world', // plaintext body 
    html: '<b>Hello world</b>', // html body 
    attachments: [{ 
     filename: 'test.csv', 
     content: data 
    }], 
}; 

// send mail with defined transport object 
transporter.sendMail(mailOptions, function(error, info){ 
    if(error){ 
     return console.log(error); 
    } 
    console.log('Message sent: ' + info.response); 
}); 

Ich vermute, es ist nicht in der Lage das Array von Objekten zu lesen und funktioniert nur für eine Zeichenfolge, die durch Komma getrennt?

Antwort

1

Sie sollten anhängen content Eigenschaft als Zeichenfolge angeben.

NodeMailer konnte Formate nicht selbst konvertieren. Sie müssen also vor dem Senden Daten in CSV konvertieren. Verwenden Sie das Modul wie to-csv.