我正在使用sendgrid:4.1.2
发送邮件。我在邮件中附加了图像。当我收到邮件时,附件的图像没有打开,图像查看器说-Premature end-of-file encountered
。我正在使用以下代码将文件附加到邮件对象中:
/*Prepare the email to be sent*/
Mail mail = new Mail();
mail.addPersonalization(personalization);
mail.setFrom(from);
mail.setSubject(subject);
/*Prepare the attachments for the mail */
if (attachments != null && attachments.size() > 0) {
for (EmailAttachmentDo emailAttachmentDo : attachments) {
Attachments attachment = new Attachments();
attachment.setContent(new
String(Base64.getEncoder().encode(emailAttachmentDo.getContent())));
attachment.setType("IMAGE");
attachment.setFilename("image-name.png");
attachment.setDisposition("attachment");
attachment.setContentId(emailAttachmentDo.getContentId());
mail.addAttachments(attachment);
}
}
/*Make a send email request*/
Request request = new Request();
request.setMethod(Method.POST);
request.setEndpoint("mail/send");
request.setBody(mail.build());
Response response = sendGrid.api(request)
注意:将附加的图像内容编码为Base64字符串后,我得到了:
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
答案 0 :(得分:1)
解决此问题的技巧是使用包中的公共apache codec commons-codec-1.8.ja r及其encodeAsString
方法对附件进行编码
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);
即使响应,有效,内容长度也被重新设置为0。