首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ionic 2+邮件枪附件

Ionic 2+邮件枪附件
EN

Stack Overflow用户
提问于 2017-06-01 16:37:08
回答 1查看 242关注 0票数 0

我正在试着发送一封附件为图片的电子邮件。不幸的是,除了附件之外,一切都可以正常工作。我在论坛或其他问题以及API上四处寻找,但我就是弄不明白。

这是一段发送电子邮件的代码。它接收一个base64image字符串数组。图像在应用程序中使用相同的数组显示,所以我认为这部分应该是正确的。

代码语言:javascript
运行
复制
sendAtt(pictures: any[]){
    var requestHeaders = new Headers();
    requestHeaders.append("Authorization", "Basic " + this.apiKey);
    requestHeaders.append("Content-Type", "application/x-www-form-urlencoded");
    this.http.request(new Request({
            method: RequestMethod.Post,
            url: "https://api.mailgun.net/v3/" + this.mailgunUrl + "/messages",
            body: "from="+this.sender+"&to=" + this.recipient + "&subject=" + this.subject + "&text=" + this.message +"&attachment="+pictures[0] ,
            headers: requestHeaders,
        }))
        .subscribe(success => {
            console.log("SUCCESS -> " + JSON.stringify(success));
        }, error => {
            console.log("ERROR -> " + JSON.stringify(error));
        });
}
EN

回答 1

Stack Overflow用户

发布于 2017-09-25 14:54:12

邮件枪的附件需要编码为multipart/form-data。

所以你的base64image字符串将不起作用,你需要转换它。

代码语言:javascript
运行
复制
dataURItoBlob(dataURI) {
  const byteString,
        mimestring;

  if (dataURI.split(',')[0].indexOf('base64') !== -1) {
    byteString = atob(dataURI.split(',')[1]);
  } else {
    byteString = decodeURI(dataURI.split(',')[1]);
  }

  mimestring = dataURI.split(',')[0].split(':')[1].split(';')[0];
  const content = new Array();
  for (var i = 0; i < byteString.length; i++) {
    content[i] = byteString.charCodeAt(i);
  }
  const blob = new Blob([new Uint8Array(content)], {
    type: mimestring
  });
  return blob;
}

现在在http请求中使用this.dataURItoBlob(图片)代替图片。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44302522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档