Sapui5 Amazon ses.sendEmail-如何附加pdf文件?

Sapui5 Amazon ses.sendEmail-如何附加pdf文件?,sapui5,amazon-ses,Sapui5,Amazon Ses,我正在尝试使用Amazon ses.sendEmail在电子邮件中附加pdf。但我不知道做这件事的参数。没有附件,它工作得很好。这是我试过的 `var ses=新的AWS.ses() 目前,如果您使用原始电子邮件API,则只能发送附件,例如: var ses_mail = "From: 'Your friendly UI5 developer' <" + email + ">\n" + "To: " + email + "\n" + "Subject: AWS SES

我正在尝试使用Amazon ses.sendEmail在电子邮件中附加pdf。但我不知道做这件事的参数。没有附件,它工作得很好。这是我试过的

`var ses=新的AWS.ses()


目前,如果您使用原始电子邮件API,则只能发送附件,例如:

var ses_mail = "From: 'Your friendly UI5 developer' <" + email + ">\n"
    + "To: " + email + "\n"
    + "Subject: AWS SES Attachment Example\n"
    + "MIME-Version: 1.0\n"
    + "Content-Type: multipart/mixed; boundary=\"NextPart\"\n\n"
    + "--NextPart\n"
    + "Content-Type: text/html; charset=us-ascii\n\n"
    + "This is the body of the email.\n\n"
    + "--NextPart\n"
    + "Content-Type: text/plain;\n"
    + "Content-Disposition: attachment; filename=\"attachment.txt\"\n\n"
    + "Awesome attachment" + "\n\n"
    + "--NextPart";

var params = {
    RawMessage: { Data: new Buffer(ses_mail) },
    Destinations: [ email ],
    Source: "'Your friendly UI5 developer' <" + email + ">'"
};

var ses = new AWS.SES();

ses.sendRawEmail(params, function(err, data) {
    if(err) {
        oDialog.close();
        MessageToast.show("Email sent successfully!");
    } 
    else {
        oDialog.close();
        MessageToast.show("Email sent successfully!");
    }           
});
var ses_mail=“From:'您友好的UI5开发人员'\n”
+收件人:“+电子邮件+”\n
+“主题:AWS SES附件示例\n”
+“MIME版本:1.0\n”
+“内容类型:多部分/混合;边界=\”下一部分\“\n\n”
+“--下一部分\n”
+“内容类型:text/html;字符集=us ascii\n\n”
+“这是电子邮件的正文。\n\n”
+“--下一部分\n”
+“内容类型:文本/普通;\n”
+“内容处置:附件;文件名=\“attachment.txt\”\n\n”
+“非常棒的附件”+“\n\n”
+“--下一部分”;
变量参数={
RawMessage:{Data:newbuffer(ses_-mail)},
目的地:[电子邮件],
来源:“‘您友好的UI5开发人员’”
};
var ses=新的AWS.ses();
ses.sendRawEmail(参数、函数(错误、数据){
如果(错误){
oDialog.close();
MessageToast.show(“电子邮件发送成功!”);
} 
否则{
oDialog.close();
MessageToast.show(“电子邮件发送成功!”);
}           
});

对于希望向SES电子邮件添加附件的任何其他人,下面是我在nodejs中为lambda所做的工作:将NodeEmailer与SES传输一起使用

npm install --save nodemailer
在守则中:

// create Nodemailer SES transporter
const transporter = nodemailer.createTransport({
  SES: new AWS.SES({
    apiVersion: '2010-12-01',
    region: "eu-west-1", // SES is not available in eu-central-1
  })
});

const emailTransportAttachments = [];
if (attachments && attachments.length !== 0) {
  emailTransportAttachments = attachments.map(attachment => ({
    filename: attachment.fileName,
    content: attachment.data,
    contentType: attachment.contentType,
  }));
}
const emailParams = {
  from,
  to,
  bcc,
  subject,
  html,
  attachments: emailTransportAttachments,
};

return new Promise((resolve, reject) => {
  transporter.sendMail(emailParams, (error, info) => {
    if (error) {
      console.error(error);
      return reject(error);
    }
    console.log('transporter.sendMail result', info);
    resolve(info);
  });
});

谢谢你的回复。我试过这个。它适用于.txt格式。当我尝试附加pdf时,它在接收电子邮件时已损坏。是否有解决方案?需要对非文本附件进行编码。您可能想在这里查看更多信息和一些Javascript代码,以便于实现这一点:我如何将编码的邮件消息发送给ses.sendrawmail()。将我的邮件参数转换为
var mimeTxt=Mime.tomimext(邮件);var mimeObj=Mime.toMimeObj(mimeTxt)。我应该给RawMessage数据加上“mimeObj”吗。如果我这样做,它将返回错误,因为RawMessage数据只接受字符串、blob和类型化array@Hari使用内容类型:应用程序/八位字节流并将pdf数据转换为base64@samarth对于attchaments。我以这种方式声明我的内容类型——仅适用于pdf。内容类型:application/pdf内容传输编码:base64我的pdf编码为base64。这很旧,但是,您如何在aws lambda中解析传入的pdf文件?
// create Nodemailer SES transporter
const transporter = nodemailer.createTransport({
  SES: new AWS.SES({
    apiVersion: '2010-12-01',
    region: "eu-west-1", // SES is not available in eu-central-1
  })
});

const emailTransportAttachments = [];
if (attachments && attachments.length !== 0) {
  emailTransportAttachments = attachments.map(attachment => ({
    filename: attachment.fileName,
    content: attachment.data,
    contentType: attachment.contentType,
  }));
}
const emailParams = {
  from,
  to,
  bcc,
  subject,
  html,
  attachments: emailTransportAttachments,
};

return new Promise((resolve, reject) => {
  transporter.sendMail(emailParams, (error, info) => {
    if (error) {
      console.error(error);
      return reject(error);
    }
    console.log('transporter.sendMail result', info);
    resolve(info);
  });
});