Microsoft Graph发送邮件,但不发送';t发送附件(javascript SDK)
我使用Microsoft Graph SDK发送电子邮件没有问题,但是当我添加附件时,此附件不会出现在发送的邮件中。 此处的附件为“Blob”类型。和PDF格式。 我已经讨论了几个与这个问题相对应的stackoverflow问题,但是没有一个解决了我的问题,这就是为什么我在这里提出我的问题Microsoft Graph发送邮件,但不发送';t发送附件(javascript SDK),javascript,angular,microsoft-graph-api,Javascript,Angular,Microsoft Graph Api,我使用Microsoft Graph SDK发送电子邮件没有问题,但是当我添加附件时,此附件不会出现在发送的邮件中。 此处的附件为“Blob”类型。和PDF格式。 我已经讨论了几个与这个问题相对应的stackoverflow问题,但是没有一个解决了我的问题,这就是为什么我在这里提出我的问题 let graphMailAttachments = new Array<any>(); //attachments is an array of blob attach
let graphMailAttachments = new Array<any>();
//attachments is an array of blob
attachments.forEach(async attachment => {
let file = await new Response(attachment).arrayBuffer();
graphMailAttachments.push({
"contentBytes": file,
"size": attachment.size,
"@odata.type" : "#microsoft.graph.fileAttachment",
"name": 'your-notes.pdf',
"id" : this.newGuid(),
})
});
subject = subject || "Your notes";
body = body || "Your notes";
let recipients = new Array<any>();
to.forEach(receiver => {
recipients.push({
emailAddress:{
address: receiver.email
}
})
});
let mail = {
message: {
subject: subject,
body: {
contentType: "Text",
content: body,
},
toRecipients: recipients,
attachments: graphMailAttachments,
},
SaveToSentItems : "true"
}
return this.graphClient.api('/me/sendMail').post(mail);
让graphMailAttachments=new Array();
//附件是一个blob数组
附件.forEach(异步附件=>{
let file=等待新的响应(附件).arrayBuffer();
graphmail.push({
“contentBytes”:文件,
“尺寸”:附件。尺寸,
“@odata.type”:“#microsoft.graph.fileAttachment”,
“名称”:“your notes.pdf”,
“id”:this.newGuid(),
})
});
主题=主题| |“你的笔记”;
body=body | |“你的笔记”;
让收件人=新数组();
to.forEach(接收器=>{
推送({
电子邮件地址:{
地址:receiver.email
}
})
});
让邮件={
信息:{
主题:主题,,
正文:{
contentType:“文本”,
内容:正文,,
},
收件人:收件人,
附件:graphMailAttachments,
},
SaveToSetItems:“正确”
}
返回此.graphClient.api('/me/sendMail').post(mail);
我做错什么了吗?附件没有出现在邮件中,这有点奇怪。根据它们的示例,将内容类型设置为application/pdf,然后对文件字节进行base64编码。看到js示例代码部分了吗?根据他们的示例,将内容类型设置为application/pdf,然后对文件字节进行base64编码。看到js示例代码部分了吗?在通过邮件发送附件之前,需要将附件从arraybuffer转换为base64字符串。我使用了下面的方法,效果很好:
arrayBufferToBase64( buffer ) : string {
var binary = '';
var bytes = new Uint8Array( buffer );
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode( bytes[ i ] );
}
return btoa( binary );
}
arrayBufferToBase64(缓冲区):字符串{
var二进制=“”;
var字节=新的Uint8Array(缓冲区);
var len=字节数。字节长度;
对于(变量i=0;i
我从stackoverflow获得答案:在通过邮件发送附件之前,您需要将附件从arraybuffer转换为base64字符串。我使用了下面的方法,效果很好:
arrayBufferToBase64( buffer ) : string {
var binary = '';
var bytes = new Uint8Array( buffer );
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode( bytes[ i ] );
}
return btoa( binary );
}
arrayBufferToBase64(缓冲区):字符串{
var二进制=“”;
var字节=新的Uint8Array(缓冲区);
var len=字节数。字节长度;
对于(变量i=0;i
我从stackoverflow获得答案:谢谢,但解决方案是将我得到的Arraybuffer转换为base64谢谢,但解决方案是将我得到的Arraybuffer转换为base64