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

Sending emails using loopback email connector

我正在尝试使用 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?

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

只需尝试使用您的邮件 a2@abc.com 更新 a1@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);
});

您必须在传输配置和 "from-to" 电子邮件中保留相同的电子邮件 ID。

请完成以下步骤:

1) 创建 2 个不同的数据源,使用不同的名称并为每个数据源添加一个 emailId。您已经创建了一个数据源,从中删除一个 emailId 并附加到另一个。

2)通过命令lb model创建一个新模型(Ex. TestMail),设置一个你想附加的用于发送邮件的数据源。

3)现在你有两个模型,一个 Email 和另一个 TestMail,现在只需使用 send() 和你需要的邮件模型。

这对我有用!

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

设置 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 来发送电子邮件。这很好用。