loopbackjs - 使用环回电子邮件连接器发送电子邮件
问题描述
我正在尝试使用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);
});
这是成功发送电子邮件。但是,如果我使用 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?
解决方案
我能够找到一种不涉及为每封电子邮件创建多个数据源的方法。
为每个传输设置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
as 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
。这工作正常。
推荐阅读
- javascript - 需要 HTMLElement API:与 IE6+ 等效的 click()
- android - 是否可以下载已编译的 c++ 二进制文件并在 iOS 上运行时加载它?
- swift - Swift - 如何限制几个特定的文本字段只允许插入 int?
- python - 在 Dockerfile 上运行安装 python 包
- c# - 在 Microsoft Teams 对话结束时清除对话状态的可能方法
- ionic-framework - 如何在 Ionic Mobile App 中测试哪个组件消耗更多电池
- python - 要导入,目录是否必须在 sys.path 中?
- javascript - Bootstrap Carousel 中的项目数返回 0
- java - 如何从另一个 LocalDate 中减去一个 localDate
- printing - 我正在尝试获取行空间但不想使用 print() 命令