问题描述
我正在使用 pdfkit
生成 pdf。 Pdfkit 在文件系统上创建文件。
然后我读取并转换为 base64
,它再次附加到 SES.sendEmail()
。
fs.readFile(pdfPath,{ encoding: 'base64'},function(err,data) {
if (err) {
throw new Error(err)
}
const args = {
bccMails: emails,toEmails: [email],bodyTxt: subject,bodyHtml: email_body,subject,rawData: data,};
SesService.sendEmail(args);
}
);
这是SesService.js
const aws = require('aws-sdk');
const { EMAIL } = require('config');
const {
AWS,} = require('config');
const configs = {
accessKeyId: AWS.ACCESS_KEY_ID,secretAccessKey: AWS.ACCESS_KEY_SECRET,region: AWS.REGION,};
aws.config.update(configs);
const SES = new aws.SESV2();
function getEmailMeta({
subject,bodyTxt,ccEmails,rawData,toEmails,bodyHtml,bccEmails,configName,}) {
return {
ConfigurationSetName: configName,Content: {
Raw: {
Data: rawData,},Simple: {
Body: {
Html: {
Charset: 'UTF-8',Data: bodyHtml,Text: {
Charset: 'UTF-8',Data: bodyTxt,Subject: {
Charset: 'UTF-8',Data: subject,Destination: {
BccAddresses: bccEmails,CcAddresses: ccEmails,ToAddresses: toEmails,FeedbackForwardingEmailAddress: EMAIL,FromEmailAddress: `"Org" <${EMAIL}>`,};
}
const sendEmail = ({
subject,}) => {
const emailMata = getEmailMeta({
subject,});
SES.sendEmail(emailMata).promise()
.then((res) => console.log(res))
.catch((err) => console.log(err));
};
module.exports = {
sendEmail,};
我遇到以下错误,
9|notifica | at IncomingMessage.emit (events.js:333:22) {
9|notifica | message: 'Content must have a single content type.',9|notifica | code: 'BadRequestException',9|notifica | time: 2021-04-12T11:31:07.832Z,9|notifica | requestId: '50f0e59a-f3d0-4ad7-a7d1-1be26cc8f678',9|notifica | statusCode: 400,9|notifica | retryable: false,9|notifica | retryDelay: 83.80674432260362
9|notifica | }
我尝试发送编码头以及如下所示,
...
rawData: Buffer.from('Content-Type: application/pdf').toString('base64') + data;
...
但我仍然遇到同样的错误。
另外,在下面尝试过,仍然出现相同的错误。
Data: Buffer.from('Content-Type: application/pdf') + '\n' + rawData,
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)