Как сделать так, чтобы он отправлял pdf только после того, как pdf сгенерирован с помощью async await - PullRequest
0 голосов
/ 03 января 2019

Как заставить почтовый транспортер ждать, пока не сгенерируется pdf?

Я приложил код, который я пробовал.Мой браузер завис и не смог отправить электронное письмо.Проблема в том, что почтовый транспортер пытается отправить электронное письмо до того, как будет сгенерирован pdf.Я предполагаю, что я не использовал асинхронный режим и жду в нужном месте.

      async () => {
        await pdf.create(document, options).then(res => {
          console.log(res)
        }).catch(error => {
          console.error(error)
        })

        let message = "Testing"

        let mailOptions = {
          from: "xxx@gmail.com",
          to: "yyy@gmail.com",
          subject: 'Subject testing',
          text: message,
          attachments: [{
            path: __dirname + '/../public/reports/' + 'test.pdf',
          }]
        }

        await transporter.sendMail(mailOptions, (error, info) => {
          if (error) {
            console.log(error);
          } else {
            console.log("sent email")
            res.json({
              email: "sent"
            });
          }
        })
      }

1 Ответ

0 голосов
/ 03 января 2019

Я понял это.Я не вызывал функцию, поэтому операция не выполняется.Я удалил await в transporter.sendMail, потому что он ничего не делает.

  sendPDF();
  async function sendPDF() {
    await pdf.create(document, options).then(res => {
      console.log(res)
    }).catch(error => {
      console.error(error)
    })

    let message = "Testing"

    let mailOptions = {
      from: "xxx@gmail.com",
      to: "yyy@gmail.com",
      subject: 'Subject testing',
      text: message,
      attachments: [{
        path: __dirname + '/../public/reports/' + 'test.pdf',
      }]
    }

    transporter.sendMail(mailOptions, (error, info) => {
      if (error) {
        console.log(error);
      } else {
        console.log("sent email")
        res.json({
          email: "sent"
        });
      }
    })
  }
...