如何使用java从S3发送带有附件文件的SES原始电子邮件



我尝试使用java发送带有图像作为附件的原始电子邮件,附件文件存在于S3中,但是,当接收电子邮件时,附件图像已损坏。我试着从我的磁盘读取文件,它工作正常,但不知何故不能为S3文件工作。这是我使用的代码。

MimeBodyPart att = new MimeBodyPart();
att.setFileName(attachment.getFileName());
String attContent = s3.getObjectAsString(emailServiceConfiguration.getAttachmentS3Bucket(), attachment.getPath());
DataSource source = new ByteArrayDataSource(attContent.getBytes(),"application/png");
att.setDataHandler(new DataHandler(source));
msg.addBodyPart(att);

请帮忙,我被困在这里好长一段时间了。

问:Amazon SES是否可以发送带有附件的电子邮件?

您还可以通过编程方式发送带有附件的电子邮件。要在电子邮件中包含附件,请构造一个新的多部分电子邮件消息。在消息中,包括包含适当的content - type报头的MIME部分,以及MIME编码的内容。接下来,使用content - disposition标头指定内容是内联显示还是作为附件处理。

一旦你写好了你的消息,你可以使用SendRawEmail API operation发送

使用Amazon SES API发送原始电子邮件

这篇文章介绍了如何在S3中转发带有附件的电子邮件将传入的电子邮件转发到外部目的地

如何将原始电子邮件(MIME)从AWS SES转换为Gmail?

使用byte array

代替从string中获取字节
MimeBodyPart att = new MimeBodyPart();
att.setFileName(attachment.getFileName());
S3Object s3Object = s3.getObject(emailServiceConfiguration.getAttachmentS3Bucket(), attachment.getPath());
byte[] byteArray = IOUtils.toByteArray(s3Object.getObjectContent());
DataSource source = new ByteArrayDataSource(byteArray,"application/png");
att.setDataHandler(new DataHandler(source));
msg.addBodyPart(att);

相关内容

  • 没有找到相关文章

最新更新