Sendgrid-nodejs: влоТСния Π² ΠΏΠΈΡΡŒΠΌΠ°Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ 0 Π±Π°ΠΉΡ‚

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 18 янв. 2019  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: sendgrid/sendgrid-nodejs

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ @sendgrid/mail β€” Β«^6.3.1Β» ΠΈ ΡƒΠ·Π΅Π» β€” 10.14.1.

Моя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° я ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠΉ строки ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Excel, я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚Ρƒ с Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° я ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Excel Π² качСствС влоТСния, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с 0 Π±Π°ΠΉΡ‚Π°ΠΌΠΈ. Π― Ρ‚Π°ΠΊΠΆΠ΅ вставил изобраТСния Π² Ρ„Π°ΠΉΠ». Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ», созданный Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΠ΄ΡƒΠ»ΡŒ exceljs. Π― ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π», Π½ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Π» Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ ... Π³Π΄Π΅ я ΠΌΠΎΠ³Ρƒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ» excel - с этим ΠΊΠΎΠ΄ΠΎΠΌ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ -
"
res.setHeader("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
res.setHeader("Content-Disposition", "attachment;filename='" + excelFile.excelOffFile + "'");
workbookFinal.xlsx.write(res).then(() => {
ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ(); }); с
"
Мой ΠΊΠΎΠ΄ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎΡ‡Ρ‚Ρ‹ -
sgMail.send({
Π²: config.get("mail.defaultAdd"),
ΠΎΡ‚: fromMailAdd,
Ρ‚Π΅ΠΌΠ°: "Π—Π°ΠΊΠ°Π· с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Excel ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ",
HTML: <h1>Test Mail</h1> ,
влоТСния: [
{
содСрТимоС: fs.readFileSync(excelFile.excelOffFilePath, {ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°:"base64"}),
имя Ρ„Π°ΠΉΠ»Π°: excelFile.excelOffFile,
Ρ‚ΠΈΠΏ: "application/vnd.ms-excel"
},
{
содСрТимоС: fs.readFileSync(excelFile.excelFactFilePath, {ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°: "base64"}),
имя Ρ„Π°ΠΉΠ»Π°: excelFile.excelFactFile,
Ρ‚ΠΈΠΏ: "application/vnd.ms-excel"
},
{
содСрТимоС: fs.readFileSync(excelFile.excelBrFilePath, {ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°: "base64"}),
имя Ρ„Π°ΠΉΠ»Π°: excelFile.excelBrFile,
Ρ‚ΠΈΠΏ: "application/vnd.ms-excel"
},
{
содСрТимоС: fs.readFileSync(excelFile.excelSuFilePath, {ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°: "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));
};

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ @Π­Π»ΠΌΠ΅Ρ€

Бпасибо Π·Π° вашС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ ΠΌΠ½Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ мСня ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ·Π°Π΄Π°Ρ‡ΠΈΠ».
Π― понял свою ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π΅Π΅. Мой ΠΊΠΎΠ΄ сгСнСрировал Ρ„Π°ΠΉΠ» excel Π±Π΅Π· записСй ΠΊ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎΡ‡Ρ‚Ρ‹. Π˜Ρ‚Π°ΠΊ, я ΡƒΠ΄Π°Π»ΠΈΠ» свой ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ создал ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Π²Π°Π» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ послС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getExcelFile. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ я Π±Ρ‹Π» ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Π±Ρ‹Π»ΠΈ созданы ΠΈ Ρ„Π°ΠΉΠ» Π±Ρ‹Π» ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π•Ρ‰Π΅ Ρ€Π°Π· большоС спасибо Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ вопросы.

Π‘ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌΠΈ поТСланиями,

ΠŸΡ€Π°ΡΡƒΠ½ ΠšΡƒΠΌΠ°Ρ€ Π”ΠΆΠ°Π»Π°Π½

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ