Spring 框架,使用 IMAP 获取带有附件的传入电子邮件
Spring Framework, get incoming emails with attachments using IMAP
使用 this link,我不知道如何获取带附件的传入电子邮件。例如,邮件 foo@bar.com 收到一封附有 baz.csv 文件的信件。如何读取文件内容?
谢谢。
使用java邮件平台,您可以获得一封邮件的附件:
Multipart multipart = (Multipart) message.getContent();
List<byte[]> attachments = new ArrayList<>();
for (int i = 0; i < multipart.getCount(); i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
if (Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition()) && bodyPart.getFileName()!=null) {
InputStream is = bodyPart.getInputStream();
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buf = new byte[4096];
int bytesRead;
while ((bytesRead = is.read(buf)) != -1) {
os.write(buf, 0, bytesRead);
}
os.close();
attachments.add(os.toByteArray());
}
}
message
是 javax.mail.Message
.
类型的对象
现在,您有一个 byte[] 列表,每个字节都是您的邮件附件之一。您可以轻松地将 byte[] 转换为 File。
使用 this link,我不知道如何获取带附件的传入电子邮件。例如,邮件 foo@bar.com 收到一封附有 baz.csv 文件的信件。如何读取文件内容?
谢谢。
使用java邮件平台,您可以获得一封邮件的附件:
Multipart multipart = (Multipart) message.getContent();
List<byte[]> attachments = new ArrayList<>();
for (int i = 0; i < multipart.getCount(); i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
if (Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition()) && bodyPart.getFileName()!=null) {
InputStream is = bodyPart.getInputStream();
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buf = new byte[4096];
int bytesRead;
while ((bytesRead = is.read(buf)) != -1) {
os.write(buf, 0, bytesRead);
}
os.close();
attachments.add(os.toByteArray());
}
}
message
是 javax.mail.Message
.
现在,您有一个 byte[] 列表,每个字节都是您的邮件附件之一。您可以轻松地将 byte[] 转换为 File。