NodeJS中使用SendGrid向多收件人发送个性化邮件的无循环方案
答案
首先明确结论:SendGrid本身不提供自动按索引匹配本地两个独立数组做正文替换的能力,不存在你预期的、完全不需要做映射逻辑、靠平台侧自动匹配邮箱和对应密码的机制。
SendGrid的替换规则核心逻辑是:每个收件人对应的替换值,必须绑定在该收件人所属的personalizations条目里,平台不会主动读取你本地存储的邮箱、密码两个独立数组做索引对齐,匹配对应值的逻辑必须在调用SendGrid API之前完成。
如果你不想手写显式的for/while循环语句,可以用下面两种方案实现,不需要自己写循环逻辑:
- 用数组原生
map方法直接生成符合要求的personalizations结构,遍历逻辑由数组内置方法完成,不需要手写循环体。示例代码如下:
// 假设你已有的两个数组 const emailList = ["email1@example.com", "email2@example.com"] const pwdList = ["pwd1", "pwd2"] // 直接映射生成personalizations,无手写循环 const personalizations = emailList.map((currentEmail, index) => ({ to: [{ email: currentEmail }], substitutions: { "-pwd-": pwdList[index] } }))
- 如果你的发信人群是固定的,可以提前把每个邮箱对应的密码作为自定义字段同步到SendGrid的联系人列表中,发信时使用动态交易模板,只需要给
personalizations传入纯收件人邮箱列表即可,模板会自动拉取对应联系人的自定义字段填充-pwd-占位符,连映射逻辑都不需要在本地写。
注意:绝对不要把所有收件人都放到同一个
personalizations条目的to数组中配置全局替换值,这种操作会让所有收件人收到同一份替换后的正文,不仅无法实现一对一匹配密码,还会造成用户密码泄露的严重安全问题。
内容的提问来源于stack exchange,提问作者Urooj
相关产品推荐
相关产品推荐

