我遇到了一个大问题。我必须解释发送到特定邮件帐户的会议。问题是我不能单独解释它们,附件,但如果转发会议,我的代码会崩溃。
Multipart multipart = (Multipart) message.getContent();
for (int x = 0; x < multipart.getCount(); x++)
{
BodyPart bodyPart = multipart.getBodyPart(x);
String[] nameHeader = bodyPart.getHeader("Content-Disposition");
String disposition = bodyPart.getDisposition();
if (bodyPart.isMimeType("multipart/alternative") || bodyPart.isMimeType("multipart/MIXED") ){
Multipart multipart2 = (Multipart) bodyPart.getContent();
for (int y = 0; y < multipart2.getCount(); y++){
BodyPart bodyPart2 = multipart2.getBodyPart(y);
if (bodyPart2.isMimeType("text/calendar"))
{
partCalendar = bodyPart2;
}else if (bodyPart.isMimeType("text/html") || bodyPart.isMimeType("text/plain"))
{
body += bodyPart.getContent().toString();
}
}
}
else if (bodyPart.isMimeType("text/calendar"))
{
if (nameHeader != null && !nameHeader[0].isEmpty())
{
partCalendar = bodyPart;
DataHandler handler = bodyPart.getDataHandler();
//here enters the forwarded
}
else{
partCalendar = bodyPart;
}
} else if (bodyPart.isMimeType("text/html") || bodyPart.isMimeType("text/plain"))
{
body += bodyPart.getContent().toString();
} else if (disposition != null && (disposition.equals(BodyPart.ATTACHMENT)))
{
System.out.println("Hay attach");
}}
这是我获取日历信息的方式
Blob calendarContent = NonContextualLobCreator.INSTANCE.wrap(NonContextualLobCreator.INSTANCE
.createBlob(partCalendar.getInputStream(), partCalendar.getSize()));
看起来: - 当会议没有附件时,它的mimetype是“text / calendar”,没有Content-disposition标头而没有文件名。 - 当会议在同一邮件中附加时,类型是“multipart / alternative”,所以我必须得到该身体部位的身体部分
这两个正在运作,但问题是转发会议时:
- 转发te会议时,邮件的mimtetype是“text / calendar”,“Content-Disposition”具有文件的名称,但我不能像其他两个一样提取内容,因为我无法生成Blob
第3点的内容类型(TEXT / CALENDAR; charset = UTF-8; method = REQUEST; name = invite.ics) 第一点的内容类型(TEXT / CALENDAR; charset = UTF-8; method = REQUEST)
对不起我的英语我希望有人可以帮助我。