如何在现有React/JS的AWS SES邮件代码中添加CC邮箱?
问题:如何给网站注册用户的邮件添加固定CC收件人?
现有代码用于给网站注册用户发送邮件,目前仅注册人能收到邮件,希望将support@mysite.com添加到每封邮件的CC中。请问现有代码是否支持该需求,是否需要大幅修改?
现有代码
import { UserModel } from '../user/model'; import { IMessageClient } from '../professional/types'; import { Professional } from '../professional/model'; const charset = 'UTF-8'; function sendSESEmail( recipient_email: string, subject: string, body: string, cb: (messageId: string, err?: Error) => void, ) { const aws = require('aws-sdk'); aws.config.region = process.env.AWS_SES_REGION; const sender = process.env.AWS_SES_SENDER; const recipient = recipient_email; const ses = new aws.SES(); const params = { Source: sender, Destination: { ToAddresses: [recipient], }, Message: { Subject: { Data: subject, Charset: charset, }, Body: { Html: { Data: body, Charset: charset, }, }, }, }; ses.sendEmail(params, (error: any, data: any) => { if (error) cb(undefined, error); else cb(data.messageId); }); } export default function sendEmail( recipient: string, subject: string, body: string, cb: (err?: Error) => void, ) { sendSESEmail(recipient, subject, body, (_, err?) => { cb(err); }); }
回答
现有代码完全支持该需求,不需要大幅修改,只需要利用AWS SES的Destination参数自带的CcAddresses字段即可实现,具体修改步骤如下:
- 先定义固定的CC邮箱常量(方便后续维护),在代码开头添加:
const CC_EMAIL = 'support@mysite.com';
- 修改
sendSESEmail函数中的params.Destination对象,添加CcAddresses数组:
Destination: { ToAddresses: [recipient], CcAddresses: [CC_EMAIL] // 新增这一行 },
修改后的完整代码(关键部分已标注)
import { UserModel } from '../user/model'; import { IMessageClient } from '../professional/types'; import { Professional } from '../professional/model'; const charset = 'UTF-8'; const CC_EMAIL = 'support@mysite.com'; // 新增:固定CC邮箱 function sendSESEmail( recipient_email: string, subject: string, body: string, cb: (messageId: string, err?: Error) => void, ) { const aws = require('aws-sdk'); aws.config.region = process.env.AWS_SES_REGION; const sender = process.env.AWS_SES_SENDER; const recipient = recipient_email; const ses = new aws.SES(); const params = { Source: sender, Destination: { ToAddresses: [recipient], CcAddresses: [CC_EMAIL] // 新增:添加CC收件人 }, Message: { Subject: { Data: subject, Charset: charset, }, Body: { Html: { Data: body, Charset: charset, }, }, }, }; ses.sendEmail(params, (error: any, data: any) => { if (error) cb(undefined, error); else cb(data.messageId); }); } export default function sendEmail( recipient: string, subject: string, body: string, cb: (err?: Error) => void, ) { sendSESEmail(recipient, subject, body, (_, err?) => { cb(err); }); }
如果后续需要动态设置CC(比如不同场景用不同CC邮箱),也可以给sendEmail和sendSESEmail函数新增一个可选的cc参数,不过当前固定CC的场景下,上面的修改足够简洁高效。
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

