我正在Node中构建一个应用程序,并且每次有新用户使用预定义的电子邮件数组时,我都会使用mandrill发送电子邮件。我有一堆电子邮件:
我在哪里有这个功能
newUserEmail(user_name, email) {
emailArray = [example1@ex.com, example2@ex.com, example3@ex.com]
const message = {
html: '<p>Name: *|NAME|* <br> Email: *|EMAIL|*</p>',
text: 'Name: *|NAME|*, Email: *|EMAIL|*',
subject: 'New person arrived',
from_email: 'newperson@example.com',
from_name: 'New',
to: [{
email: emailArray,
type: 'to'
}],
merge: true,
merge_vars: [{
rcpt: emailArray,
vars: [{
name: 'NAME',
content: user_name
}, {
email: 'EMAIL',
content: email
}]
}]
};
mandrill_client.messages.send({ message }, function(result) {
console.log(result);
}, function(e) {
console.log(`A mandrill error occurred: ${e.name} - ${e.message}`);
});
}
我在控制台上得到了
[ { email: 'Array',
status: 'invalid',
_id: '...',
reject_reason: null } ]
如果我只设置了一封电子邮件,那么它将毫无问题地发送出去。
我是否需要进行循环并运行此功能与阵列中的电子邮件一样多的次数?我希望mandrill能够识别数组中的电子邮件:(
答案 0 :(得分:1)
根据我在查看文档后收集到的信息,看起来“收件人”数组中的每个对象都是一个单独的电子邮件地址。
我不会为每个电子邮件地址运行该功能。只需映射到电子邮件数组即可。 例如:
const formattedArray = emailArray.map(email => ({ email, type: 'to' }));
// if you're not a fan of arrow functions
const formattedArray = emailArray.map(function(email) {
return { email, type: 'to' };
});
然后在mandrill消息中,您可以将“ to”设置为等于formattedArray
to: formattedArray