node.js - 部署到 azure 时,nodemailer 行为不稳定

标签 node.js azure nodemailer

我正在nodeJs中开发一个后端服务器,在某些时候我需要生成一个pdf并通过电子邮件将其发送给用户。我使用 GraphQl、Html-PDF 和 nodeJs 作为技术。

我之前用的是puppeteer,但是由于后端服务器位于Azure,所以配置起来非常头疼,所以我改成了html-pdf。

现在我的代码:

这是解析器的一部分。

  let transporter = nodemailer.createTransport({
            service: "Outlook365",
            host: "smtp.office365.com",
            port: 587,
            secure: false,
            auth: {
              user: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="abced3cac6dbc7ceebced3cac6dbc7ce85c8c4c6" rel="noreferrer noopener nofollow">[email protected]</a>", 
              pass: "example", 
            },
          });
          
        var i;
        await pdf.create(html, options).toBuffer((err, buffer) => {
          i = buffer
          transporter.sendMail({
          from: '"example" <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="8af9eff8fce3e9efcaeff2ebe7fae6efa4e9e5e7" rel="noreferrer noopener nofollow">[email protected]</a>', 
          to: `${a1.dataValues.email}`, 
          subject: "Result Email ✔", 
          text:
            " Willkommen beim. Ihre Ergebnisse sind hier.Ihr/ Welcome to the Service. Your results are here.  ", 
          html: `<p>Willkommen beim . <br /> <br /> Ihre Ergebnisse sind hier. <br /> <br /> <br /> <br />      Welcome. <br /> <br /> Your results are here.<br /> <br /> </p>`, 
          attachments: [
            {
              filename: `${a1.dataValues.kitID}.pdf`,
              content: i,
            },
          ],
        })}
        )

这在本地工作,但在部署到 Azure 时不起作用。我一直在服务器的其他部分使用nodemailer,通常在回调中它通常不起作用,但我也尝试这样做:

 let transporter = nodemailer.createTransport({
            service: "Outlook365",
            host: "smtp.office365.com",
            port: 587,
            secure: false, 
            auth: {
              user: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="82e7fae3eff2eee7c2e7fae3eff2eee7ace1edef" rel="noreferrer noopener nofollow">[email protected]</a>",
              pass: "example", 
            },
          });
          
        var i;
        await pdf.create(html, options).toBuffer((err, buffer) => {
          i = buffer
)}
          transporter.sendMail({
          from: '"example" <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9fecfaede9f6fcfadffae7fef2eff3fab1fcf0f2" rel="noreferrer noopener nofollow">[email protected]</a>', 
          to: `${a1.dataValues.email}`,
          subject: "Result Email ✔", 
          text:
            " Willkommen beim. Ihre Ergebnisse sind hier       Welcome . Your results are here.",y
          html: `<p>Willkommen beim. <br /> <br /> Ihre Ergebnisse sind hier.  <br /> <br /> <br /> <br />      Welcome . <br /> <br /> Your results are here.<br /> <br /> </p>`, // html body
          attachments: [
            {
              filename: `${a1.dataValues.kitID}.pdf`,
              content: i,
            },
          ],
        }
        )

编辑:解决了 Azure 发送电子邮件的问题,尽管缓冲区为“空”

最佳答案

第一个版本应该可以工作。但是您需要将文件放置在缓冲区上,而不仅仅是常量上。

尝试改变

 {
              filename: `${a1.dataValues.kitID}.pdf`,
              content: i,
            },

 {
              filename: `${a1.dataValues.kitID}.pdf`,
              content: new Buffer(buffer),
            },

关于node.js - 部署到 azure 时,nodemailer 行为不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64134856/

相关文章:

node.js - 如何在npm中同步package json的依赖

python - 宇宙数据库 : Unable to run group by query in python SDK

javascript - 如何在nodemailer中正确发送电子邮件并关闭smtp连接?

azure - 单独的数据库 Multi-Tenancy 应用程序可以在 Azure 上运行吗?

email - 节点邮件程序。 createTestAccount 和 cypress : generate same email address

node.js - 错误: Invalid login: 535 Authentication failed: Bad username/password with node mailer

node.js - 请求模块,浏览器取消时如何停止流式传输

node.js - 使用 Node.js 将 HTML 转为 PDF

node.js - 如何使用 sequelize 执行此特定 sql 左连接?

Azure - 调整大小后无法启动虚拟机