Отправляйте события iCal с методом = PUBLISH в Exchange 2013, Outlook 2010, OWA

Мы отправляем события календаря в формате iCalendar нашим клиентам после подписки или отмены подписки на событие.

Содержимое iCalendar вложено в файл и встроено в сообщение электронной почты. Благодаря встраиванию Outlook 2010 раньше показывал событие и предлагал импортировать его в свой календарь. Thunderbird / Lightning работает точно так же.

Мы используем Метод = ПУБЛИКОВАТЬ как указано в RFC 5546 — 3.2.1. Мы не хотим, чтобы клиенты «принимали» или «отклоняли» событие, поскольку это уже подтверждено системой бронирования. Это можно сделать с помощью метода = REQUEST.

Это работало как задумано, пока мы использовали Exchange 2007. С Exchange 2013 у нас странное поведение

  • в Outlook 2010: отображается электронная почта, отображается значок события, но вы не можете сохранить событие в своем календаре
  • в OWA: электронная почта не отображается!
  • в Thunderbird через IMAP: электронная почта не отображается. Вместо этого вы получаете странное электронное письмо с темой «Fehler beim Abrufen der folgenden Nachricht mithilfe des IMAP4-Protokolls: 1393431». (Ошибка при получении следующего сообщения по протоколу IMAP4).

Делая это с методом = REQUEST, кажется, все хорошо, даже для Outlook.

Я сократил нашу настройку, чтобы найти решение. Теперь я понятия не имею.

Событие iCalendar, основанное на минимальном опубликованном событии в RFC 5546


НАЧАТЬ: VCALENDAR
МЕТОД: ЗАПРОС
PRODID: - // Пример / ExampleCalClient // EN
VERSION: 2,0
НАЧАТЬ: VEVENT
ОРГАНИЗАТОР; CN = "а": MAILTO: [email protected]
DTSTART: 19970701T200000Z
DTSTAMP: 19970611T190000Z
РЕЗЮМЕ: СТ. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
UID: [email protected]
СТАТУС: Подтверждена
END: VEVENT
END: VCALENDAR

PHP скрипт на основе swiftmailer


setSubject ('Ваша тема')
-> setFrom (array ('[email protected] '=>' a '))
-> setTo (массив ('[email protected] '=>' b '))
//->attach(Swift_Attachment::fromPath('Minimal.ics'))
;

// включить как встроенную часть
$ part = \ Swift_MimePart :: newInstance ()
-> setEncoder (\ Swift_Encoding :: getBase64Encoding ())
-> setContentType ('text / calendar; method = PUBLISH')
-> setBody (file_get_contents ( 'Minimal.ics'));

$ Сообщение-> присоединять ($ часть);

$ transport = Swift_SmtpTransport :: newInstance ('localhost', 25);
// Создание почтовой программы с использованием созданного вами транспорта
$ mailer = Swift_Mailer :: newInstance ($ transport);
$ Mailer-> отправить ($ сообщение);

Полученное письмо


Обратный путь:
[...]
Message-ID:
Дата: ср, 01 июня 2016 16:29:34 +0000
Тема: Ваша тема
Из
Кому: б
MIME-версия: 1.0
Тип контента: составной / альтернативный;
граница = "_ = _ swift_v4_1464798574_0bd8d119cc81344afaa03879bf961d51 _ = _"

--_ = _ swift_v4_1464798574_0bd8d119cc81344afaa03879bf961d51 _ = _
Тип контента: текст / календарь; Метод = ПУБЛИКОВАТЬ; кодировка = UTF-8
Content-Transfer-Encoding: base64

QkVHSU46VkNBTEVOREFSDQpNRVRIT0Q6UkVRVUVTVA0KUFJPRElEOi0vL0V4YW1wbGUvRXhhbXBs
ZUNhbENsaWVudC8vRU4NClZFUlNJT046Mi4wDQpCRUdJTjpWRVZFTlQNCk9SR0FOSVpFUjtDTj0i
QWxleGFuZGVyIEJpZ2dhIjpNQUlMVE86QWxleGFuZGVyLkJpZ2dhQHNsdWItZHJlc2Rlbi5kZQ0K
RFRTVEFSVDoxOTk3MDcwMVQyMDAwMDBaDQpEVFNUQU1QOjE5OTcwNjExVDE5MDAwMFoNClNVTU1B
Ulk6U1QuIFBBVUwgU0FJTlRTIC1WUy0gRFVMVVRILVNVUEVSSU9SIERVS0VTDQpVSUQ6MDk4MTIz
NC0xMjM0MjM0LTIzQGV4YW1wbGUuY29tDQpTVEFUVVM6Q09ORklSTUVEDQpFTkQ6VkVWRU5UDQpF
TkQ6VkNBTEVOREFSDQo =

--_ = _ swift_v4_1464798574_0bd8d119cc81344afaa03879bf961d51 _ = _--

Поведение не меняется, если

  • событие прилагается
  • событие цитируется для печати вместо base64
  • тело заполнено текстом / простым текстом и / или текстом / HTML
  • конец строки в файле событий — это dos (\ r \ n) или unix (\ n)

Thunderbird / Lightning и Googlemail работают как положено.

Итак, что с этим не так? Или это известное поведение Exchange 2013 / Outlook 2010? Или кто дьявол в этом случае?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]