SendGrid emailing API , send email attachment
This is the way you can send attachments using SendGrid API.
Mail mail = createEmail();
Attachments attachments = new Attachments();
Base64 x = new Base64();
String encodedString = x.encodeAsString(loadPdfFromClasspath());
attachments.setContent(encodedString);
attachments.setDisposition("attachment");
attachments.setFilename("xyx.pdf");
attachments.setType("application/pdf");
mail.addAttachments(attachments);
try {
request.method = com.sendgrid.Method.POST;
request.endpoint = "mail/send";
request.body = mail.build();
// Uncomment once connectivity with sendgrid is resolved
Response response = sg.api(request);
}catch (IOException ex) {
throw ex;
}
When i executed the code i got the following message in logs in netbeans
202
{X-Frame-Options=DENY, Server=nginx, Connection=keep-alive,
X-Message-Id=vqVw2RtUShSVQ_ymVEVqaw, Content-Length=0, Date=Tue, 26
Jul 2016 20:05:54 GMT, Content-Type=text/plain; charset=utf-8}
The trick to solve the issue is to encode the attachment using commons apache codec commons-codec-1.8.jar and its encodeAsString
method from package
org.apache.commons.codec.binary.Base64
Attachments attachments3 = new Attachments();
Base64 x = new Base64();
String imageDataString = x.encodeAsString(fileData);
attachments3.setContent(imageDataString);
attachments3.setType("image/png");//"application/pdf"
attachments3.setFilename("x.png");
attachments3.setDisposition("attachment");
attachments3.setContentId("Banner");
mail.addAttachments(attachments3);
Even the content-length was retruned as 0 in response it worked.