我正在尝试使用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.com
和a2@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?
答案 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()
与所需的邮件模型一起使用即可。
这对我有用!