使用回送电子邮件连接器发送电子邮件

时间:2019-07-25 13:55:47

标签: loopbackjs loopback

我正在尝试使用loopback-email-connector发送电子邮件。我想设置2个电子邮件帐户。我正在datasources.json中进行以下操作。

"emails": {
        "name": "emails",
        "connector": "mail",
        "transports": [
            {
                "type": "smtp",
                "host": "smtp.yandex.com",
                "secure": true,
                "port": 465,
                "tls": {
                    "rejectUnauthorized": false
                },
                "auth": {
                    "user": "a1@abc.com",
                    "pass": "password"
                }
            },
            {
                "type": "smtp",
                "host": "smtp.yandex.com",
                "secure": true,
                "port": 465,
                "tls": {
                    "rejectUnauthorized": false
                },
                "auth": {
                    "user": "a2@abc.com",
                    "pass": "password"
                }
            }
        ]
    }

在上述情况下,我添加了2个电子邮件帐户-a1@abc.coma2@abc.com。 要发送电子邮件,我正在执行以下操作:

app.models.Email.send({
      to: 'foo@bar.com',
      from: 'a1@abc.com',
      subject: 'my subject',
      text: 'my text',
      html: 'my <em>html</em>'
    }, function(err, mail) {
      console.log('email sent!');
      cb(err);
    });

这已成功发送电子邮件。但是,如果我从电子邮件中将其用作a2@abc.com,则无法使用。我收到以下错误:

Error: Mail command failed: 553 5.7.1 Sender address rejected: not owned by auth user.

但是,如果我移动a2@abc.com作为datasources.json中的第一封电子邮件,它将起作用。 实际上,哪一封电子邮件仅在datasources.json中有效,而第二封电子邮件却无效。在这种情况下,如何设置多个电子邮件ID?

3 个答案:

答案 0 :(得分:3)

我能够找出一种不涉及为每个电子邮件创建多个数据源的方法。

为每种传输设置alias会分配一个别名,该别名可以在发送电子邮件时使用。关于上述问题,我们可以执行以下操作:

"emails": {
        "name": "emails",
        "connector": "mail",
        "transports": [
            {
                "type": "smtp",
                "host": "smtp.yandex.com",
                "secure": true,
                "port": 465,
                "alias": "a1",
                "tls": {
                    "rejectUnauthorized": false
                },
                "auth": {
                    "user": "a1@abc.com",
                    "pass": "password"
                }
            },
            {
                "type": "smtp",
                "host": "smtp.yandex.com",
                "secure": true,
                "port": 465,
                "alias": "a2",
                "tls": {
                    "rejectUnauthorized": false
                },
                "auth": {
                    "user": "a2@abc.com",
                    "pass": "password"
                }
            }
        ]
    }

如上所述设置alias后,要发送电子邮件,我们可以使用alias进行传输。

app.models.Email.send({
      to: 'foo@bar.com',
      from: 'a1@abc.com',
      subject: 'my subject',
      text: 'my text',
      html: 'my <em>html</em>',
      transport: "a1"
    }, function(err, mail) {
      console.log('email sent!');
      cb(err);
    });

在上面的示例中,我设置了a1别名,并通过将传输设置为a1来发送电子邮件。效果很好。

答案 1 :(得分:1)

邮件服务器拒绝您的电子邮件,因为您正尝试发送与您的电子邮件选项不同的邮件。

只需尝试使用您的邮件a1@abc.com更新a2@abc.com,如下所示:-

app.models.Email.send({
  to: 'foo@bar.com',
  from: 'a2@abc.com',
  subject: 'my subject',
  text: 'my text',
  html: 'my <em>html</em>'
}, function(err, mail) {
  console.log('email sent!');
  cb(err);
});

您必须在传输配置和“从-到”电子邮件中保留相同的电子邮件ID。

答案 2 :(得分:0)

请执行以下步骤:

1)创建2个具有不同名称的不同数据源,并向每个数据源添加一个emailId。您已经建立了一个数据源,只需删除一个emailId并附加到另一个即可。

2)通过命令lb model创建一个新模型(例如TestMail),设置一个要附加的数据源来发送邮件。

3)现在您有两个模型,一个Email和另一个TestMail,现在只需将send()与所需的邮件模型一起使用即可。

这对我有用!