我正在使用邮枪节点。js模块发送批量电子邮件。
根据官方文档中的黄色警告信息,指定收件人变量应该导致向“每个收件人发送一封单独的电子邮件,收件人字段中只有他们的电子邮件。”
但是,我的收件人可以看到所有“收件人”地址。我正在成功地使用收件人变量为用户设置电子邮件主题,因此看起来这些邮件被正确读取。
请注意,我正在使用MIME发送一封HTML电子邮件。我用更直接的纯文本变体尝试了这一点,它看起来确实有效。
有人能帮助我理解为什么我的收件人可以看到所有其他收件人吗?我是做错了什么,还是这个功能不适用于Mailgun MIME电子邮件?
// recipients
var recipients = ['email1@email1.com', 'email2@email2.com', 'email3@email3.com'];
var recipientVars = {
'email1@email1.com': {
id: 1,
subject: 'Subject 1'
},
'email2@email2.com': {
id: 2,
subject: 'Subject 2'
},
'email3@email3.com': {
id: 3,
subject: 'Subject 3'
}
};
// options
var options = {
from: 'Me <me@me.com>',
to: recipients,
'recipient-variables': recipientVars,
subject: '%recipient.subject%',
text: myMailText,
html: myMailHTML,
headers: {
'X-Mailgun-Recipient-Variables': JSON.stringify(recipientVars)
}
};
// create mail
var mail = new nodemailer(options);
// send mail
mail.compile().build((err, message) => {
var mailData = {
to: recipients,
message: message.toString('ascii'),
'recipient-variables': recipientVars
};
mailgun.messages().sendMime(mailData, (err, res) => {
console.log(res);
});
});
似乎此功能不适用于sendMime()
方法,但它适用于常规send()
方法,即使没有任何邮件编译。以下是工作代码段:
const mailgun = require('mailgun-js')({
apiKey: 'api_key',
domain: 'domain'
});
const recipients = ['email1@gmail.com', 'email2@gmail.com'];
const recipientVars = {
'email1@gmail.com': {
id: 1,
subject: 'Subject 1',
name: 'Name 1'
},
'email2@gmail.com': {
id: 2,
subject: 'Subject 2',
name: 'Name 2'
}
};
const envelope = {
from: 'Sender <sender@gmail.com>',
to: recipients,
subject: '%recipient.subject%',
html: 'Hey <strong>%recipient.name%<strong>',
'recipient-variables': recipientVars,
};
mailgun.messages().send(envelope, function (error, body) {
console.log(body);
});
正如您所注意到的,所有占位符都已填充且