Sendgrid-nodejs: lampiran dalam surat memiliki 0 byte

Dibuat pada 18 Jan 2019  ·  3Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Halo,

Saya menggunakan @sendgrid/mail - "^6.3.1" & node - 10.14.1.

Masalah saya adalah ketika saya mengirim data baris tunggal dari database di lampiran excel, saya dapat menerima email dengan lampiran tetapi ketika saya mengirim beberapa data baris dari data database di excel sebagai lampiran, saya menerima lampiran dengan 0 byte. Saya telah menyematkan gambar juga di file. Saya mencoba melampirkan file yang sama yang dibuat melalui modul exceljs. Saya telah mencoba banyak tetapi gagal .. di mana saya dapat menghasilkan file excel yang sama- dengan kode ini di browser-
"
res.setHeader("Tipe-Konten", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
res.setHeader("Disposisi-Konten", "lampiran;namafile='" + excelFile.excelOffFile + "'");
workbookFinal.xlsx.write(res).then(() => {
res.end(); });S
"
Kode saya untuk mengirim email adalah -
sgMail.send({
ke: config.get("mail.defaultAdd"),
dari: dariMailAdd,
subject: "Pesanan dengan lampiran excel dikirim melalui software",
html: <h1>Test Mail</h1> ,
lampiran: [
{
konten: fs.readFileSync(excelFile.excelOffFilePath, {encoding:"base64"}),
nama file: excelFile.excelOffFile,
ketik: "aplikasi/vnd.ms-excel"
},
{
konten: fs.readFileSync(excelFile.excelFactFilePath, { encoding: "base64" }),
nama file: excelFile.excelFactFile,
ketik: "aplikasi/vnd.ms-excel"
},
{
konten: fs.readFileSync(excelFile.excelBrFilePath, { encoding: "base64" }),
nama file: excelFile.excelBrFile,
ketik: "aplikasi/vnd.ms-excel"
},
{
konten: fs.readFileSync(excelFile.excelSuFilePath, { encoding: "base64" }),
nama file: excelFile.excelSuFile,
ketik: "aplikasi/vnd.ms-excel"
}
]
})

tangkapan layar surat -
image

Tolong bantu saya bagaimana menyelesaikan hal yang sama.

unknown or a waiting for feedback non-library issue

Semua 3 komentar

Halo @prasoojalan ,

Sepertinya Anda memiliki masalah dengan jalur ke file atau penyandian file. Saya akan memeriksa ulang nilai excelFile.* dalam kode Anda untuk memastikan file tersebut ada. Kemudian, saya akan memastikan bahwa file itu sendiri adalah base64 yang dikodekan dengan benar. Mungkin alat ini dapat membantu dengan yang terakhir.

Salam hangat,

Elmer

Halo @ Elmer

Kode lengkap saya untuk membuat dan mengirim file adalah sebagai -
Saya mencoba memberikan satu jalur root lampiran, tetapi juga tidak berhasil. File excel yang sama dihasilkan , berhasil diunduh di browser .... kode apa yang saya lewatkan atau saya tidak dapat memahami konsepnya dengan benar ... dapatkah Anda membantu saya..

Dalam fungsi createExcelFile dengan "C" sebagai parameter, saya mengembalikan buku kerja di mana tidak dalam kasus lain.

exports.getExcelFile = (req, res, next) => {
   const excelFile = {};

   Order.findById(req.params.id).then(order => {
      excelFile.excelOffFile = "Off_" + order.factory + "_" + order._id + ".xls";
      excelFile.excelOffFilePath = path.join("data", "excel", excelFile.excelOffFile);
      excelFile.excelFactFile = "Fact_" + order.factory + "_" + order._id + ".xls";
      excelFile.excelFactFilePath = path.join("data", "excel", excelFile.excelFactFile);
      excelFile.excelBrFile = "Br_" + order.factory + "_" + order._id + ".xls";
      excelFile.excelBrFilePath = path.join("data", "excel", excelFile.excelBrFile);
      excelFile.excelSuFile = "Su_" + order.factory + "_" + order._id + ".xls";
      excelFile.excelSuFilePath = path.join("data", "excel", excelFile.excelSuFile);

      let workbookFinal = createExcelFile(order, "C", excelFile.excelOffFilePath);

      createExcelFile(order, "F", excelFile.excelFactFilePath);
      createExcelFile(order, "B", excelFile.excelBrFilePath);
      createExcelFile(order, "S", excelFile.excelSuFilePath);
sgMail.send({
         to: config.get("mail.defaultAdd"),
         from: defaultMailId,
         subject: "Order with excel attachment send through software ",
         html: `<h1>
         The mail has been sent as trial through program for testing excel file attachement  .
         </h1>
         <h3>
            Office file - ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelOffFile })}</br>
            Fact file - ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelFactFile })}</br>
            Br file - ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelBrFile })}</br>
            Su file - ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelSuFile })}</br>
         </h3>
         `,
         attachments: [
            {
               content: fs.readFileSync(path.join(rootDir.rootDir, excelFile.excelOffFilePath), { encoding: "base64" }),
               filename: excelFile.excelOffFile,
            },
            {
               content: fs.readFileSync(excelFile.excelFactFilePath, { encoding: "base64" }),
               filename: excelFile.excelFactFile,
            },
            {
               content: fs.readFileSync(excelFile.excelBrFilePath, { encoding: "base64" }),
               filename: excelFile.excelBrFile,
            },
            {
               content: fs.readFileSync(excelFile.excelSuFilePath, { encoding: "base64" }),
               filename: excelFile.excelSuFile,
            }
         ]
      }).then(result => {
         console.log("mail sent successfully...");
      }).catch(err => console.log(err));

      res.setHeader("Content-Type", "application/vnd.ms-excel");
      res.setHeader("Content-Disposition", "attachment;filename='" + excelFile.excelOffFile + "'");
      workbookFinal.xlsx.write(res).then(() => {
         res.end();
      });

}).catch(err => console.log(err));
};

Halo @Elmer

Terima kasih atas saran Anda, itu membantu saya memahami aliran kode saya yang sangat membingungkan saya.
Saya mencari tahu kesalahan saya dan menyelesaikannya. Kode saya menghasilkan file excel tanpa catatan pada saat surat dikirim. Jadi, saya menghapus kode email saya dari fungsi dan membuat fungsi terpisah dan kemudian memanggil fungsi tersebut setelah fungsi getExcelFile. Dengan cara ini saya yakin bahwa file telah dibuat dan file telah dilampirkan dengan benar.

Sekali lagi terima kasih banyak telah membantu saya fokus pada kode saya sebelum mengajukan pertanyaan lebih lanjut.

Salam hangat,

Jalan Prasoon Kumar

Apakah halaman ini membantu?
0 / 5 - 0 peringkat