#email #events #outlook #icalendar
#Адрес электронной почты #Мероприятия #outlook #icalendar
Вопрос:
Этот код отправляет сообщение учетной записи Outlook с прикрепленным архивом ics, но Outlook не распознает его как событие и не показывает его в предварительном просмотре. С Gmail проблем нет. Он хорошо отображает предварительный просмотр, но Outlook кажется несовместимым. Я использую библиотеку ical4j версии 3.0.6. Может кто-нибудь помочь мне найти проблему? Спасибо
final String username = "example@gmail.com";
final String password = "pass";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
try {
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
// Define message
MimeMessage message = new MimeMessage(session);
message.addHeaderLine("method=REQUEST");
message.addHeaderLine("charset=UTF-8");
message.addHeaderLine("component=VEVENT");
message.addHeaderLine("Content-Type: multipart/alternative");
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setHeader("Content-Transfer-Encoding:", "quoted-printable");
mimeMessage.setHeader("Content-Type:", "multipart/alternative");
Address address = new InternetAddress("example@gmail.com");
mimeMessage.setFrom(address);
message.addRecipients(Message.RecipientType.TO, "example@outlook.es");
message.setSubject("Outlook Meeting Request Using JavaMail");
StringBuffer sb = new StringBuffer();
StringBuffer buffer = sb.append("BEGIN:VCALENDARn"
"PRODID:-//Microsoft Corporation//Outlook 9.0
MIMEDIR//ENn"
"VERSION:2.0n"
"METHOD:REQUESTn"
"TZID:Romance Standard Timen"
/*"BEGIN:STANDARDn"
"DTSTART:16010101T030000n"
"TZOFFSETFROM: 0200n"
"TZOFFSETTO: 0100n"
"RRULE:FREQ=YEARLY;
INTERVAL=1;BYDAY=-1SU;BYMONTH=10n"
"END:STANDARDn" */
"BEGIN:DAYLIGHTn"
"DTSTART:16010101T020000n"
"TZOFFSETFROM: 0100n"
"TZOFFSETTO: 0200n"
"RRULE:FREQ=YEARLY;
INTERVAL=1;BYDAY=-1SU;BYMONTH=3n"
"END:DAYLIGHTn"
"BEGIN:VEVENTn"
"ATTENDEE;EXPECT=REQUIRE;
RSVP=YES:MAILTO:example1@outlook.esn"
"ORGANIZER:MAILTO:example@gmail.comn"
"DTSTART:20051208T053000Zn"
"DTEND:20051208T060000Zn"
"LOCATION:Conference roomn"
"TRANSP:1n"
"SEQUENCE:0n"
"LOCATION;LANGUAGE=es-ES:n"
"X-MICROSOFT-CDO-APPT-SEQUENCE:0n"
"X-MICROSOFT-CDO-OWNERAPPTID:2117356856n"
"X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVEn"
"X-MICROSOFT-CDO-INTENDEDSTATUS:BUSYn"
"X-MICROSOFT-CDO-ALLDAYEVENT:FALSEn"
"X-MICROSOFT-CDO-IMPORTANCE:1n"
"X-MICROSOFT-CDO-INSTTYPE:0n"
"X-MICROSOFT-DONOTFORWARDMEETING:FALSEn"
"X-MICROSOFT-DISALLOW-COUNTER:FALSEn"
"X-MICROSOFT-LOCATIONS:[]n"
"UID:040000008200E00074C5B7101A82E008000000000"
02FF466CE3AC5010000000000000000100n"
" 000004377FE5C37984842BF9440448399EB02n"
"DTSTAMP:20051206T120102Zn"
"CATEGORIES:Meetingn"
"DESCRIPTION:This the description of the meetingn"
"SUMMARY:Test meeting requestn"
"PRIORITY:5n"
"CLASS:PUBLICn"
"BEGIN:AALARMn"
"TRIGGER:PT1440Mn"
"ACTION:DISPLAYn"
"DESCRIPTION:Remindern"
"END:AALARMn"
"END:VEVENTn"
"END:VCALENDAR");
// Create the message part
BodyPart messageBodyPart = new MimeBodyPart();
// Fill the message
messageBodyPart.setHeader("
Content-Class", "urn:content- classes:calendarmessage");
messageBodyPart.setHeader("Content-ID", "calendar_message");
messageBodyPart.setHeader("Content-Type", "inline");
messageBodyPart.setHeader("filename", "prueba.ics");
messageBodyPart.setDataHandler(new DataHandler(
new ByteArrayDataSource(buffer.toString(),
"text/calendar")));// very important
// Create a Multipart
Multipart multipart = new MimeMultipart();
// Add part one
multipart.addBodyPart(messageBodyPart);
// Put parts in message
message.setContent(multipart);
// send message
Transport.send(message);
} catch (MessagingException me) {
me.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
Ответ №1:
Используйте:
CONTENT-TYPE:text/calendar;