如何通过Gmail API为每位收件人生成含专属邮箱的个性化邮件
用Gmail API发送个性化批量邮件解决方案
没问题!我来帮你搞定这个个性化批量发邮件的需求~ 其实核心思路很简单:因为每封邮件的内容是个性化的,你需要为每个收件人单独生成邮件内容,然后通过Gmail API批量提交这些独立的邮件请求——这样既能实现内容差异化,又能一次性完成发送操作。
下面是具体的实现步骤和代码示例(以JavaScript为例,假设你已经完成了Gmail API的OAuth授权配置):
步骤1:整理收件人列表
先把需要发送的收件人信息整理成数组,方便后续循环处理:
// 收件人列表,每个元素包含邮箱(如果需要其他个性化变量也可以加在这里) const recipients = [ { email: 'abc@gmail.com' }, { email: 'xyz@gmail.com' } ];
步骤2:编写邮件生成工具函数
Gmail API要求邮件内容是URL安全的Base64编码MIME格式,所以我们先写一个函数来生成符合要求的邮件内容:
function createPersonalizedEmail(toEmail, personalizedBody) { // 邮件主题 const emailSubject = 'Welcome Notification'; // 对主题进行UTF-8编码,避免乱码 const encodedSubject = `=?utf-8?B?${Buffer.from(emailSubject).toString('base64')}?=`; // 组装MIME格式的邮件内容 const emailParts = [ `To: ${toEmail}`, 'From: Your Name <your-own-email@gmail.com>', // 替换成你的发件邮箱 `Subject: ${encodedSubject}`, 'Content-Type: text/plain; charset=utf-8', // 如果要发HTML邮件可以改成text/html '', // 空行分隔邮件头和正文 personalizedBody ]; // 转换为URL安全的Base64编码 const rawEmail = Buffer.from(emailParts.join('\n')) .toString('base64') .replace(/\+/g, '-') .replace(/\//g, '_') .replace(/=+$/, ''); return rawEmail; }
步骤3:批量发送个性化邮件
用Promise.all并行处理所有邮件发送请求,这样比逐个发送效率更高:
const { google } = require('googleapis'); // 假设你已经通过OAuth获取了auth对象 const gmail = google.gmail({ version: 'v1', auth }); async function sendAllPersonalizedEmails() { try { // 为每个收件人生成发送请求的Promise const sendPromises = recipients.map(recipient => { // 生成个性化正文 const body = `Hi ${recipient.email}. We are glad to see you here.`; // 生成符合要求的邮件内容 const rawEmail = createPersonalizedEmail(recipient.email, body); // 调用Gmail API发送邮件 return gmail.users.messages.send({ userId: 'me', // 'me'代表当前授权的用户邮箱 requestBody: { raw: rawEmail } }); }); // 等待所有邮件发送完成 await Promise.all(sendPromises); console.log('所有个性化邮件都发送成功啦!'); } catch (error) { console.error('发送过程中出现错误:', error); } } // 执行发送 sendAllPersonalizedEmails();
关键说明和注意事项
- 为什么要单独生成邮件?:Gmail API的单条
send请求只能发送内容完全一致的邮件给多个收件人,无法实现内容差异化。所以必须为每个收件人创建独立的邮件请求。 - 配额限制:Gmail API有发送配额(比如免费账户每天最多发送500封),如果收件人数量很大,建议分批发送,避免触发限流。
- HTML邮件支持:如果需要发送HTML格式的个性化邮件,只需要把
Content-Type改成text/html,然后把正文换成HTML内容即可。 - 批量请求优化:如果收件人非常多(比如上千个),可以使用Gmail的批量请求API(
batch端点),减少HTTP请求次数,实现更高效的批量发送。
内容的提问来源于stack exchange,提问作者Asad ullah
相关产品推荐
相关产品推荐

