Файл iCal (.ics) не распознается IBM (Lotus) Notes

Я генерирую файлы ICS из приложения PHP и отправляю их по электронной почте в виде вложений (через API SendGrid).

Файл ICS отлично работает с веб-почтой Gmail и с iPhone. Однако IBM Notes не распознает их как приглашения на собрания. Заметки показывает вложение, но не видит его как приглашение на мероприятие.

Вот мой файл ICS:

BEGIN:VCALENDAR
PRODID:-//My Company//v1.1//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20160127T140000Z
DTEND:20160127T143000Z
DTSTAMP:20160114T213657Z
ORGANIZER;CN=Demo Two:
mailto:[email protected]
UID:e93838a737b3f9ae75056968b22281b2
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=CHAIR;RSVP=FALSE
;CN=Demo Two:mailto:[email protected]
CREATED:20160114T213657Z
DESCRIPTION:another scheduled
LAST-MODIFIED:20160114T213657Z
LOCATION:See email
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:another scheduled
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

Я пытаюсь отправить один и тот же файл ICS нескольким получателям, поэтому я не включаю строку ATTENDEE для получателя, только для СТУЛА.

Я не могу найти ЛЮБУЮ подробную информацию о том, что Notes требует в своих файлах ICS …

Есть идеи, что не так?

3

Решение

Я диагностировал часть своей проблемы, сравнивая тело письма с приглашением Google Mail (которое работает в Notes). Есть несколько очевидных проблем при прикреплении файла ICMIC через веб-интерфейс SendGrid.

Почта должна включать несколько частей: тело, встроенный текст / объект календаря и вложенный файл .ics.

Outlook и Google пользователь вложенный файл. Я думаю, что Notes использует встроенные данные, так как кажется, что игнорирует вложение .ics.

Я нашел этот связанный вопрос StackOverflow:
Как добавить заголовки в sendgrid?

Итак, я прошел путь построения сообщения в SwiftMailer с соответствующими заголовками сообщений и вложений. Похоже, что пока он работает правильно, но я подтвердлю, когда буду тестировать в Notes.

РЕДАКТИРОВАТЬ: я подтвердил, что делает встроенное приглашение icalendar работает, и что это приглашение теперь появляется в Notes.

Каждый раздел письма должен иметь свой собственный тип MIME. Вот тело сообщения:

Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<p>Hello,</p>
<p>This is a friendly reminder ...

А вот приглашение icalendar (обратите внимание, что вы не можете прочитать данные iCalendar, потому что они закодированы в base64:

Content-Type: text/calendar; charset=UTF-8; method=PUBLISH; name=invite.ics
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename=invite.ics

QkVHSU46VkNBTEVOREFSDQpQUk9ESUQ6LS8vU3RyaWRlLlRyYWluaW5nLy92
MS4xLy9FTg0KVkVSU0lPTjoyLjANCkNBTFNDQUxFOkdSRUdPUklBTg0KTUVU...

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

$attachment = Swift_Attachment::newInstance($ical, 'invite.ics', 'text/calendar');
$attachment->setDisposition('inline');
$attachment->setContentType('text/calendar; charset=UTF-8; method=PUBLISH');
$message->attach ( $attachment );

В приведенном выше фрагменте $ ical является правильно отформатированной строкой iCalendar.

Извините, это уже давно, но найти информацию о том, как это сделать правильно, довольно сложно.

5

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

Это может быть одна из двух проблем:

Прежде всего, у вас должен быть посетитель хотя бы для пользователя, которому вы отправляете приглашение.

Если это не сработает, MIME-структура вашей электронной почты может не распознаваться Lotus Notes, и в этом случае вы, вероятно, захотите включить в свой вопрос все сообщение MIME.

3

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