Составная электронная почта с текстом и календарем: Outlook не распознает ics

У меня проблемы с Outlook 2007. При отправке "составного / альтернативного" электронного письма с "текстовой / календарной" частью Outlook распознает событие календаря, и так оно и должно быть. Но при добавлении "текстовой / простой" части Outlook отображает только простой текст, календарная часть отсутствует (но она присутствует в исходном коде электронного письма).

Источник выглядит так:

[...]
Content-Type: multipart/alternative;
boundary="_=_swift_v4_138243630552664dd1bc83e_=_"

--_=_swift_v4_138243630552664dd1bc83e_=_
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

[...the plain message...]

--_=_swift_v4_138243630552664dd1bc83e_=_
Content-Type: text/calendar; charset=utf-8
Content-Transfer-Encoding: quoted-printable

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//GourmetPortal//NONSGML rr//DE
BEGIN:VEVENT
UID:res-Burkert
CREATED:20131030T113000Z
ORGANIZER;CN=3DSven Burkert:MAILTO:[...]
SUMMARY:[...]
DESCRIPTION:[...]
DTSTART:20131030T113000Z
END:VEVENT
END:VCALENDAR

--_=_swift_v4_138243630552664dd1bc83e_=_--

2 ответа

Решение

Вам не хватает метода iTIP, оба в типе контента:

Content-Type: text/calendar; charset="utf-8"; method=REQUEST

и как свойство VCALENDAR:

BEGIN:VCALENDAR
VERSION:2.0
METHOD:REQUEST
PRODID:-//GourmetPortal//NONSGML rr//DE

Метод может быть PUBLISH или REQUEST (в этом случае вы также пропускаете некоторое свойство ATTENDEE).

Затем некоторые клиенты игнорируют iMIP в multipart/alternative и смотрят только как вложения, поэтому вам может понадобиться следующая структура:

multipart/mixed
  multipart/alternative
    text/plain
    text/calendar;method=REQUEST
  text/calendar (with a content-disposition:attachment)

По сути, вы добавляете вложение дважды. Приглашение iMIP из календаря google/yahoo и молнии имеют такую ​​структуру.

Чтобы Outlook всегда распознавал часть iCal, создайте сообщение, в котором текст / календарь является единственной частью MIME. Все остальное (тело, вложения и т. Д.) Должно быть встроено в часть VEVENT.

Другие вопросы по тегам