2017-06-01 103 views
0

我試圖發送附有照片的電子郵件。不幸的是,除了附件,一切都有效。我環顧論壇或其他問題以及API,但我無法弄清楚。Ionic 2 + Mailgun附件

這是發送電子郵件的代碼片段。它接收一組base64圖像字符串。圖像顯示在應用程序使用相同的陣列,所以我認爲這部分應該是好的。

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)); 
     }); 
} 
+0

最大文章大小是25MB,是你的形象比那更小? Mailgun日誌說什麼? – emc

回答

0

mailgun的附件需要編碼爲multipart/form-data。

因此,您的base64image字符串將無法正常工作,您需要將其轉換。

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; 
 
}

現在不是圖片[0]使用this.dataURItoBlob(圖片[0])在您的http請求。