Tomek
Tomek

Reputation: 25

Missing part of content when automatic (crone) sending email by nodemailer

I have a strange problem. I made a small application in node.js, using nodemailer to send emails each day. And it's working perfectly when I run it from the terminal (for testing). But when I add a job to crontab, then emails are sent but there is missing some of the content inside.

This is my transporter conf:

// send mail with defined transport object
  let info = await transporter.sendMail({
      priority: 'high',
      from: '"Example" <[email protected]>', // sender address
      to: '[email protected]', // list of receivers
      subject: 'Example title: '+currentDate, // Subject line
      text: '', // plain text body
      html: header + missing + carrierStatArr + ending,// html body
      attachments: attachments
  });

And code for variables to html field:

let carrierStatArr = [], attachments = [];
  let header = `<h1>some text ${currentDate}</h1><div><i>some text</br>some text</i></div>`;
  let missing = `<h3 style="color:red;">some text: <b>${missingArr}</b></h3>`;
  for (let i in checkResultArr) {
      let imgName = checkResultArr[i].file;
      let correctedImgName = imgName.substring(0,16);
      carrierStatArr.push(`<p>Some text <b>${checkResultArr[i].name}</b>,</br>
                          <span>Some text: <b>${checkResultArr[i].status}</b></span></br>
                          <span><img src="cid:${correctedImgName}" width="1000px"/></span>
                      </p>`);
  }
  //console.log(carrierStatArr);
  attachments = checkResultArr.map((file)=>{
      let pat = '/var/www/html/public_html/MM1_service/images/';
      let fi = file.file;
      let fit = fi.substring(0,16);
      return {path: pat+file.file, cid: fit};
    });
    //console.log(attachments[0].path);

  let ending = `<hr size="1" width="100%" color="gray"><p><i>some text</i></p>`;

Of course, there are all data in arrays. And as I wrote, when I run this code manually using terminal /node sendmail.js/ it works perfectly, email contains all the information's, text, and images. But when the script is run automatically by the cron job, the email has only header, missing, and ending variables (and the content from arrays is there) but the rest: carrierStatArr, attachments are missing. Why is that? Manually work, run by cron not exacly.

Upvotes: 0

Views: 85

Answers (1)

Tomek
Tomek

Reputation: 25

Note: I managed to solve my problem by using the 'node-cron' module instead of the system cron. The app is working correctly.

But still I'm curious, from an academic point, why that problem occurred.

Upvotes: 0

Related Questions