Вложение электронной почты ICS не работает для пользователей Exchange

Я отправляю приглашение на собрание по электронной почте с вложением ICS из веб-приложения Java. Все работает нормально, когда я отправляю его пользователям Outlook, которые не используют сервер Exchange. Они получают соответствующие кнопки «Принять / Отклонить» и могут добавить встречу в свой календарь.

Однако у пользователей, находящихся на сервере Exchange, что-то не работает. Они получают приглашение на собрание, но оно указывается как организатор собрания, и они не могут изменить какие-либо сведения о собрании. Они не могут принять или отклонить и не могут добавить это в свой календарь.

Это похоже на то, что Exchange меняет или ему не нравится формат отправляемого ICS, но обычный Outlook справляется с этим отлично.

Вот ICS, который мы отправляем. Кто-нибудь знает, что мы можем изменить, чтобы эта работа работала для пользователей Exchange, в дополнение к Gmail и пользователям Outlook, не использующим Exchange.

BEGIN:VCALENDAR
PRODID:-//fincrm//iCal4j 1.0//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
UID:128
DTSTAMP:20110927T191127Z
DTSTART;VALUE=DATE-TIME:20110928T082000
DTEND;VALUE=DATE-TIME:20110928T085000
ACTION:DISPLAY
DESCRIPTION:Time is set to 8:20 AM
SEQUENCE:0
ORGANIZER:MAILTO:[email protected]
LOCATION:Financial CRM Application
ATTENDEE:MAILTO:[email protected]
SUMMARY:CRM Task #128
END:VEVENT
END:VCALENDAR

Я ценю ваши предложения.


person Jeff    schedule 28.09.2011    source источник


Ответы (3)


Я понял, что отправка ICS в виде составного сообщения MIME, похоже, работает как с Gmail, так и с Exchange. Вот некоторые из соответствующих кодов Java («календарь» - это строка ICS)

    // Create an alternative Multipart
    Multipart mp = new MimeMultipart("alternative")
    BodyPart textPart = new MimeBodyPart();
    textPart.setText(eventDescription);

    BodyPart calPart = new MimeBodyPart();
    calPart.addHeader("content-class", "urn:content-classes:calendarmessage")

    calPart.setContent(calendar.toString(), "text/calendar;method=REQUEST")

    mp.addBodyPart(textPart);
    mp.addBodyPart(calPart);
person Jeff    schedule 24.01.2012

Я знаю, что это было давно, но вы можете решить эту проблему с помощью исправления реестра, найденного здесь:

http://support.microsoft.com/kb/944094

Я тестировал это с Outlook 2010, работающим на Exchange 2010, и это позволяло вносить сторонние события в календарь, когда вы являетесь организатором.

person ryan    schedule 20.01.2012
comment
Я не могу управлять реестром пользователей из моего приложения, которое генерирует ICS, так что это не очень помогает. Спасибо хоть. - person Jeff; 25.01.2012

Я обнаружил, что если организатор настроен на вас, Outlook 2011 на Mac не будет предлагать добавить собрание в ваш календарь. Удаление Организатора из собрания, кажется, работает достаточно хорошо.

Я также обнаружил, что если вложение ICS не является последним элементом, прикрепленным к составному сообщению, оно будет удалено.

person dannyman    schedule 25.07.2013