【问题标题】:Is it possible to set the sender address dynamically in nodemailer?是否可以在nodemailer中动态设置发件人地址?
【发布时间】:2018-07-19 06:27:13
【问题描述】:

我正在使用 nodemailer 从联系表单中向自己发送电子邮件,作为我申请的一部分。我将它设置为 SendPulse 作为 SMTP 服务器。我想像这样创建消息:

const transporter = nodemailer.createTransport(
  {
    service: 'SendPulse',
    auth: {
      user: 'myemail@myemail.com',
      pass: 'mypassword'
    }
  }
);

app.post('/send-message', (req, res) => {
  transporter.sendMail(
    {
      from: req.body.email,
      to: 'myemail@myemail.com',
      subject: req.body.subject,
      text: req.body.message,
      html: `<p>${req.body.message}</p>`
    },
    (err, info) => {
      if (err) {
        res.send(err);
      } else {
        res.send(info);
      };
    }
  );
});

问题是,除非req.body.email 与在传输器上注册的myemail@myemail.com 相同,否则我会收到错误:

{
  code: "EENVELOPE",
  response: "554 5.9.2 Sender domain is not valid.",
  responseCode: 554, command: "MAIL FROM"
}

有什么方法可以将from 属性设置为联系表单中输入的任何内容?

【问题讨论】:

    标签: node.js smtp nodemailer


    【解决方案1】:

    表示发件人邮件地址的域在邮件发送过程中通过SendPulse验证无效。

    这可能是由于您域的 DNS 中缺少配置造成的。您可能缺少 SPF 记录。

    创建 SPF 记录,以便您的更多电子邮件能够进入收件人的收件箱。接收邮件服务器将使用 SPF 记录来确认电子邮件是从您的域发送的。

    您应该将 TXT 记录添加到您域中的 DNS 设置中,如 described here 并具有以下值:

    v=spf1 include:mxsmtp.sendpulse.com +a +mx ~all
    

    如果它不起作用,请确保您被允许发送电子邮件,因为在您通过验证之前,您的帐户可能被阻止发送电子邮件。
    请联系 SendPulse 支持以了解详情。

    【讨论】:

      【解决方案2】:

      在遇到同样的问题后。我切换到这个解决方案。通过 npm 包使用 sendPulse API。

      下面是代码和链接

         var sendpulse = require("sendpulse-api");
      /*
       * https://login.sendpulse.com/settings/#api
       */
      var API_USER_ID = "USER_ID";
      var API_SECRET = "USER_SECRET";
      var TOKEN_STORAGE = "/tmp/";
       
      sendpulse.init(API_USER_ID,API_SECRET,TOKEN_STORAGE,function() {
          sendpulse.listAddressBooks(console.log);
      });
       var answerGetter = function(data) {
        console.log(data);
      }
      
      var email = {
        "html" : "<h1>Example text</h1>",
        "text" : "Example text",
        "subject" : "Example subject",
        "from" : {
          "name" : "Alex",
          "email" : "some@domain.com"
        },
        "to" : [
          {
            "name" : "Piter",
            "email" : "some@domain.net"
          },
        ],
        "bcc" : [
          {
            "name" : "John",
            "email" : "some@domain.info"
          },
        ]
      };
      sendpulse.smtpSendMail(answerGetter,email);
      
      /*   */
      

      For complete detail visit this site.

      【讨论】:

        猜你喜欢
        • 2012-03-01
        • 1970-01-01
        • 2013-07-02
        • 2018-07-18
        • 1970-01-01
        • 1970-01-01
        • 2012-03-30
        • 1970-01-01
        • 2014-12-18
        相关资源
        最近更新 更多