您好我是java新手。我希望手动解析ics(outlook日历文件)。如果使用第三方api如何解析java中的ics文件?
答案 0 :(得分:5)
如果不使用任何第三方库,您基本上必须编写自己的iCalendar(请参阅RFC 5545)解析器,以复制这些第三方库的工作。这不会很有趣。
不可否认,我自己使用iCal4j的经历并不十分愉快 - 但我不会使用java.util.Date
和java.util.Calendar
从头开始编写自己的解析器。您可能发现使用Joda Time编写iCalendar解析器以表示各个方面(“日期”,“时间”等)是值得的,因为这是一个比使用的更好的API。内置的...但同样你可能会发现iCal4j足以满足你的目的。
答案 1 :(得分:0)
您可以参考iCal4j的API文档 http://ical4j.sourceforge.net/introduction.html
这可能会帮助您进行解析,您可以参考以下代码:
{
Properties prop = new Properties();
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.starttls.enable", "true");
prop.put("mail.smtp.host", "smtp.gmail.com");
prop.put("mail.smtp.port", "587");
final String username = "xx@xx"; //your email id
final String password = "password"; //your password
System.out.println(meeting);
try {
Session session = Session.getInstance(prop, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
MimeMessage mimeMessage = new MimeMessage(session);
Multipart multipart = new MimeMultipart("alternative");
if (calendar != null) {
// Another part for the calendar invite
MimeBodyPart invite = new MimeBodyPart();
invite.setHeader("Content-Class", "urn:content- classes:calendarmessage");
invite.setHeader("Content-ID", "calendar_message");
invite.setHeader("Content-Disposition", "inline");
invite.setContent(calendar.toString(), "text/calendar");
multipart.addBodyPart(invite);
}
mimeMessage.setContent(multipart);
Transport.send(mimeMessage);
}