Outlook не показывает ics как событие в почте

#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;