繁体   English   中英

部署到 Heroku 时 Nodemailer 不工作

[英]Nodemailer not working when deploying to Heroku

我正在使用nodemailer在我的服务器中使用express发送 email 。 一切都在本地主机上运行良好,但是当我在 Heroku 上部署它时,它不再工作了,看起来它不支持nodemailer上的 nodemailer(这是我研究过的)。 这是我的代码,请你帮我处理一下。 非常感谢,祝你有美好的一天

This is sending single mail

    exports.send_mail = (req, res, next) => {
      var {subjectTo, mailList, content} = req.body;
      var {attachURL} = req;
    
      var transporter = nodemailer.createTransport({
        service: 'gmail',
        secure: false,
        port: 465,
        auth: {
          user: process.env.EMAIL,
          pass: process.env.PASSWORD,
        },
      });
    
      var mailOptions = {
        from: 'sale.shopeeholic@gmail.com',
        to: mailList,
        cc: mailList,
        subject: subjectTo,
        text: `${content} \n Attached files: ${attachURL}`,
      };
    
      transporter.sendMail(mailOptions, (err, info) => {
        if (err) {
          console.log(err);
          return res.status(400).json({err});
        } else {
          return res.status(200).json({message: `Mail sent to ${mailList}`});
        }
      });
    };

This is sending merge mail/multiple mail

exports.merge_mail = (req, res, next) => {
  console.log('merge mail begin');
  const mailOptionList = req.body;
  // {mails, mailContent, mailTitle}
  var counter = 0;

  var transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
      user: process.env.EMAIL,
      pass: process.env.PASSWORD,
    },
  });

  for (var i = 0; i < mailOptionList.length; i++) {
    var mailOptions = {
      from: 'sale.shopeeholic@gmail.com',
      to: mailOptionList[i].mails.join(','),
      cc: mailOptionList[i].mails.join(','),
      subject: mailOptionList[i].mailTitle,
      text: mailOptionList[i].mailContent,
    };

    transporter.sendMail(mailOptions, (err, info) => {
      if (err) {
        console.log(err);
        return res
          .status(400)
          .json({err, message: `trouble in sending mail at index ${i}`});
      } else {
        console.log(`mail sent to ${JSON.stringify(mailOptionList[i].mails)}`);
        counter++;
      }
    });
    console.log(`mail sent to ${JSON.stringify(mailOptionList[i].mails)}`);
    counter++;
    console.log(counter);
  }

  if (counter === mailOptionList.length) {
    return res.status(200).json({message: 'mail sent all'});
  }

可能process.env.EMAILprocess.env.PASSWORD是未定义的。 您必须在 Heroku 中设置环境变量。 就是这样:

https://devcenter.heroku.com/articles/config-vars

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM