我将 Sendgrid 的新 API (v3) 与 Node js + 库@sendgrid/mail
和@sendgrid/client
.
我想要实现的目标:向我的所有联系人发送每周摘要(退订该组的人除外)。我使用通过 Sendgrid 创建的模板,这要归功于它的 template_id,以及动态模板数据来使用每周数据填充邮件。
问题:
我可以使用/v3/marketing/singlesends使用我的模板向我的所有联系人发送营销活动,但我无法使用我的动态模板数据发送它。
我可以使用我的模板 + 动态模板数据一次发送一封电子邮件,但为此我需要先检索我的所有联系人,并且我只能从此端点/v3/marketing/contacts检索最后 50 个联系人(他们禁用了分页) . 我可能已经能够从这个端点/contactdb/recipients检索它们,问题是我在他们发布新 API 后创建了我的 Sendgrid 帐户,所以我无法访问它。
关于如何执行此操作的任何想法?
当前代码:
1) 配置广告系列
const sgClient = require('@sendgrid/client')
var params={
'name': 'Weekly Digest #'+nb,
'sender_id': sg_sender_id,
'suppression_group_id': sg_unsub_group_id,
'template_id': id_template,
'dynamicTemplateData': template_params,
//also tried with 'dynamic_template_data' instead, not working
'filter': {'send_to_all': true}
}
let url='/v3/marketing/singlesends/' + campaign_id.toString('base64')
const request = {
method: 'PATCH',
url: url,
body: params
}
sgClient.setApiKey(config.sendgrid_key)
sgClient.request(request)
.then(([response, body]) => {
console.log('body:', body)
})
.catch(error => {
console.error('error:', error.toString())
})
2) 发送活动
let url='/v3/marketing/singlesends/' + campaign_id.toString('base64') + '/schedule'
let params={'send_at': 'now'}
const request = {
method: 'PUT',
url: url,
body: params
}
sgClient.setApiKey(config.sendgrid)
sgClient.request(request)
.then(([response, body]) => {
console.log('body:', body)
})
.catch(error => {
console.error('error:', error.toString())
})