0
我用這對在Salesforce使用sendgrid API帶附件發送郵件...我收到錯誤響應,錯誤的請求和狀態代碼:400文件上傳rest api .....?
有人幫我弄明白.. ???這
String Boundary = '----------------------------400f182a9360';
String requestBody;
requestBody ='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="api_user"'+'\r\n\r\n'+'youremail'+'\r\n\r\n' ;
requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="api_key"'+'\r\n\r\n'+'yourpassword'+'\r\n\r\n' ;
requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="to"'+'\r\n\r\n'+'[email protected]'+'\r\n\r\n' ;
requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="subject"'+'\r\n\r\n'+'test'+'\r\n\r\n' ;
//requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="html"'+'\r\n\r\n'+'<b>hi</b>'+'\r\n\r\n' ;
requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="text"'+'\r\n\r\n'+'mail'+'\r\n\r\n' ;
requestBody +='--' + Boundary +'\r\n\r\n'+'Content-Disposition: form-data; name="from"'+'\r\n\r\n'+'[email protected]'+'\r\n\r\n' ;
requestBody += '--' + Boundary + '\r\n\r\n'+'Content-Disposition: form-data; name="files['+mails.filename+']";filename="'+mails.filename+ '"\r\n\r\n'+ 'Content-Type:'+mails.conType+'\r\n\r\n'+Encodingutil.base64Encode(mails.bl)+'\r\n\r\n';
requestBody+= '--' + Boundary + '--\r\n';
String url= 'https://sendgrid.com/api/mail.send.json';
Http h = new Http();
HttpRequest req = new HttpRequest();
// req.setTimeout(60000);
req.setEndpoint(url);
req.setMethod('GET');
req.setHeader('Content-Type', 'multipart/form-data; boundary=' +Boundary);
req.setHeader('Content-Length',String.valueof(requestBody.length()));
system.debug('=====length======'+String.valueof(requestBody.length()));
//req.setHeader('Authorization','Bearer '+ssId);
req.setBody(requestBody);
HttpResponse res;
String resURL;
res = h.send(req);
response=res.getbody();
System.debug('++++++++++++++'+requestBody);
System.debug('++++++++++++++'+url);
system.debug('=====response is======'+response);
if(response.contains('success'))
{
response='{"message":"success"}';
}
else
{
response='error: '+res.getbody();
}
輸出
------------------------------400f182a9360
Content-Disposition: form-data; name="api_user"
sendgridusername
------------------------------400f182a9360
Content-Disposition: form-data; name="api_key"
sendgridpassword
------------------------------400f182a9360
Content-Disposition: form-data; name="to"
[email protected]
------------------------------400f182a9360
Content-Disposition: form-data; name="subject"
test
------------------------------400f182a9360
Content-Disposition: form-data; name="text"
mail
------------------------------400f182a9360
Content-Disposition: form-data; name="from"
[email protected]
------------------------------400f182a9360
Content-Disposition: form-data; name="files[New Text Document.txt]";filename="New Text Document.txt"
Content-Type:text/plain
YW5pbWVzaCBzZGYgc2RmIHMgZiBzIGRmIHNk
------------------------------400f182a9360--
謝謝回覆mate .... bodyBlob.toString()只適用於文本文件不適用於其他格式,如圖像...我應該從他們做些什麼....你能幫忙嗎... – user2034816 2013-02-13 04:50:38
我有修改了這個問題......有人可以幫助我... – user2034816 2013-02-13 09:05:07
我對'sendgrid' API不太熟悉,但你需要修復的第一件事是在邊界之後的雙CRLF。它應該只有一個換行符,然後是標題,然後是兩行和數據。我也認爲你可以在數據和下一個邊界之間減少一個換行符。 – tomlogic 2013-02-13 18:34:37