Sendgrid-nodejs: المرفقات في رسائل تحتوي على 0 بايت

تم إنشاؤها على ١٨ يناير ٢٠١٩  ·  3تعليقات  ·  مصدر: sendgrid/sendgrid-nodejs

أهلا،

أنا أستخدم @ sendgrid / mail - "^ 6.3.1" & node - 10.14.1.

مشكلتي هي أنه عندما أرسل بيانات صف واحد من قاعدة البيانات في مرفق إكسل ، يمكنني استلام بريد مرفق ولكن عندما أرسل بيانات صف متعددة من بيانات قاعدة بيانات في Excel كمرفق ، أتلقى مرفقًا بـ 0 بايت. لقد قمت بتضمين الصور أيضًا في الملف. أحاول إرفاق نفس الملف الذي تم إنشاؤه من خلال وحدة exceljs. لقد حاولت كثيرًا ولكن فشلت .. حيث أنني قادر على إنشاء ملف Excel نفسه - باستخدام هذا الرمز في المتصفح -
"
res.setHeader ("نوع المحتوى" ، "application / vnd.openxmlformats-officedocument.spreadsheetml.sheet") ؛
res.setHeader ("Content-Disposition"، "attachment؛ اسم الملف = '" + excelFile.excelOffFile + "" ") ؛
workbookFinal.xlsx.write (res) .then (() => {
إعادة إرسال()؛ })؛س
"
الكود الخاص بي لإرسال البريد هو -
sgMail.send ({
إلى: config.get ("mail.defaultAdd") ،
من: fromMailAdd ،
الموضوع: "إرسال الطلب مع مرفق Excel عبر البرنامج" ،
html: <h1>Test Mail</h1> ،
المرفقات: [
{
المحتوى: fs.readFileSync (excelFile.excelOffFilePath، {encoding: "base64"}) ،
اسم الملف: excelFile.excelOffFile ،
اكتب: "application / vnd.ms-excel"
} ،
{
المحتوى: fs.readFileSync (excelFile.excelFactFilePath، {encoding: "base64"}) ،
اسم الملف: excelFile.excelFactFile ،
اكتب: "application / vnd.ms-excel"
} ،
{
المحتوى: fs.readFileSync (excelFile.excelBrFilePath، {encoding: "base64"}) ،
اسم الملف: excelFile.excelBrFile ،
اكتب: "application / vnd.ms-excel"
} ،
{
المحتوى: fs.readFileSync (excelFile.excelSuFilePath، {encoding: "base64"}) ،
اسم الملف: excelFile.excelSuFile ،
اكتب: "application / vnd.ms-excel"
}
]
})

لقطة شاشة بريد -
image

الرجاء مساعدتي في كيفية حل نفس الشيء.

unknown or a waiting for feedback non-library issue

ال 3 كومينتر

مرحبا prasoojalan ،

يبدو أن لديك مشكلة في المسار إلى الملف أو في ترميز الملف. أود التحقق مرة أخرى من قيم excelFile.* في التعليمات البرمجية الخاصة بك للتأكد من وجود الملف. بعد ذلك ، أود التأكد من أن الملف نفسه بترميز base64 بشكل صحيح. ربما يمكن أن تساعد هذه الأداة في هذا الأخير.

مع أطيب التحيات،

إلمر

مرحبا @ إلمر

الكود الخاص بي لإنشاء وإرسال الملف هو -
حاولت إعطاء مسار جذر واحد للمرفق ، لكنه أيضًا لم ينجح. تم إنشاء ملف Excel نفسه ، وتم تنزيله بنجاح في المتصفح .... ما هو الرمز الذي أفتقده أو لا أستطيع فهم المفهوم بشكل صحيح ... هل يمكنك مساعدتي ..

في دالة createExcelFile مع "C" كمعامل ، سأعيد المصنف حيث لم يكن كذلك في حالات أخرى.

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));
};

مرحبا @ Elmer

شكرًا لاقتراحك ، لقد ساعدني ذلك في فهم تدفق الكود الخاص بي الذي كان يحيرني كثيرًا.
اكتشفت خطئي وقمت بحله. أنشأ الكود الخاص بي ملف Excel بدون سجلات بحلول الوقت الذي تم فيه إرسال البريد. لذلك ، قمت بإزالة رمز البريد الخاص بي من الوظيفة وأنشأت وظيفة منفصلة ثم استدعيت الوظيفة بعد وظيفة getExcelFile. بهذه الطريقة كنت متأكدًا من أنه تم إنشاء الملفات وإرفاق الملف بشكل صحيح.

مرة أخرى ، أشكرك كثيرًا على مساعدتي في التركيز على الكود الخاص بي قبل طرح أي أسئلة أخرى.

مع أطيب التحيات،

براسون كومار جالان

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات