Приглашение на собрание с вложением не распознается в Outlook 2010 / Office 365

У нас есть приложение.NET, которое вручную генерирует приглашения на собрания для отправки пользователям. Процесс, который мы используем, выглядит следующим образом:

  • Создайте System.Net.Mail.MailMessage и установите обычные поля (из / в /subject/ и т. Д.) И информацию о собрании в виде вложения (файл ICS), 7-битную кодировку - это необходимо для почтовых клиентов, которые не распознают Outlook стиль приглашает
  • Добавьте два альтернативных представления, text/plain и text/html, оба с 7-битным кодированием для текста письма
  • Добавьте другое альтернативное представление с "text/calendar; charset=UTF-8; method=REQUEST" с тем же текстом ICS, что и в прикрепленном файле ICS выше, также с 7-битным кодированием
  • Отправить сообщение

Это работало нормально с традиционной настройкой Outlook 2007 / Exchange (вложение не отображается, а сообщение обрабатывается как приглашение на собрание), но после обновления до Outlook 2010/Office 365 встроенные данные ICS не распознаются, и сообщение отображается как обычное сообщение с приложенным файлом ICS. Удаление вложения приводит к правильно распознанному сообщению. Мы не уверены, что это новая версия Outlook или Office 365, но это должен быть один из них.

У кого-нибудь есть идеи, почему это изменилось и как мы можем это исправить?

3 ответа

Мы столкнулись с подобной проблемой. В нашем случае наш почтовый сервер был обновлен с Exchange 2003 до Exchange 2010, наша компания перенесла учетные записи электронной почты некоторых людей на 2010. Мы по-прежнему используем Outlook 2007 в качестве внешнего интерфейса. У нас есть приложение.NET, которое создает приглашения на собрания в виде Alernative View и отправляет их получателям. Те, чьи учетные записи электронной почты были перенесены, больше не получают приглашения в виде приглашений на собрания, а просто отправляют электронные письма. Те, кто остается в обмене в 2003 году, без проблем получают приглашения в качестве приглашения на встречу. Я искал в Интернете и обнаружил, что Exchange 2010 изменил способ обработки файла.ics, и он более строг, чем предыдущая версия. Хуже всего то, что он не соответствует стандарту RFC, и Microsoft считает, что не стоит пытаться выяснить, какая часть мешала их обмену 2010 правильно интерпретировать.ics. Поэтому мой обходной путь - не отправлять.ics в качестве альтернативного представления, а отправлять его как вложение. Когда оно получено в учетных записях электронной почты, перенесенных в 2010 г., пользователь может видеть вложение, и пользователь может щелкнуть вложение, чтобы импортировать его в свои календари.

Outlook/Exchange ожидает, что тип сообщения будет текстовым / календарным, а не текстовым / составным.

Я получил эту проблему недавно при использовании System.Net.Mail:

  1. Отправить письмо с iCalendar в качестве альтернативного представления (текст / календарь) без вложений: это работает. - Я использовал iCal.Net для создания сообщения iCalendar.
  2. Отправка электронной почты с помощью iCalendar в качестве альтернативного представления (текст / календарь) с вложением: он работает с Windows 10 Mail, но не работает с Outlook365.

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

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

Но Outlook365 ожидает, что сообщение будет:

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

Когда Outlook получает неправильный формат вложения. Некоторые как, Он будет игнорировать часть календаря.

Мое решение: я решил использовать MailKit для отправки электронной почты вместо System.Net.Mail.By с помощью этой библиотеки я могу контролировать формат сообщения.

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