首页 > 解决方案 > 使用环回电子邮件连接器发送电子邮件

问题描述

我正在尝试使用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);
    });

这是成功发送电子邮件。但是,如果我使用 from email as 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?

标签: loopbackjsloopback

解决方案


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

为每个传输设置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如上设置后,发送电子邮件,我们可以使用aliasas transport。

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。这工作正常。


推荐阅读