2014-02-16 1 views
0

Я пытаюсь создать файл .ics на PHP, который отправляется пользователю. Решение хорошо работает в Gmail (я получаю причудливое приглашение со всей информацией, появляющейся в нужных местах), но Outlook, похоже, вообще не распознает его. Я получаю пустое электронное письмо без прикрепления, и никакое событие не добавляется ни к календарю, насколько я могу это видеть.Outlook не распознает сообщение ics

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

Обновление: по какой-то странной причине я получаю приглашение, и оно отображается как приложение на iPhone, которое синхронизируется с моей учетной записью Exchange. Это настольный Outlook, не получается. Почему?

Вот код во все его славе.

$message = 
"BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN 
METHOD:REQUEST 
X-MS-OLK-FORCEINSPECTOROPEN:TRUE 
CALSCALE:GREGORIAN 
BEGIN:VEVENT 
DTSTAMP: $timestamp 
DTSTART: $datestart 
DTEND: $dateend 
UID: $uniqueid 
LOCATION: $address 
DESCRIPTION: $description 
URL;VALUE=URI: $uri 
SUMMARY: $summary 

END:VEVENT 
END:VCALENDAR"; 

// Mail parameters 
$newline = "\r\n"; 

$headers = "From: InnovationskontorEtt Dashboard <[email protected]>\n"; 
$headers .= "MIME-Version: 1.0\n"; 
$headers .= "Content-Type: text/calendar; charset=utf-8; name=inbjudan.ics; method=REQUEST".$newline; 
$headers .= "Content-Disposition: inline; filename=inbjudan.ics".$newline; 
$headers .= "Content-Transfer-Encoding: 7bit"; 

$subject = $summary; 

$to = '[email protected]'; 

/*mail send*/ 
if(mail($to, $subject, $message, $headers)) : ?> 
     <div class="alert alert-warning"> 
     Evenemanget skickades till din kalender. 
     </div> 

<?php else : ?> 
     <div class="alert alert-danger"> 
     Det gick inte att skicka evenemanget till din kalender. 
     </div> 
<?php endif; ?> 

ответ

1

в общем, это лучшая практика, по крайней мере, отправить многослойную/альтернативу, так что клиенты, которые не знают ничего о тексте/calendar может отображать читаемое пользователем сообщение. См. пример http://tools.ietf.org/html/rfc6047#section-4.2.

Затем, чтобы приглашение было фактическим приглашением, оно должно иметь по крайней мере один объект ORGANIZER и одно свойство ATTENDEE. См. http://tools.ietf.org/search/rfc5546#section-3.2.2 для списка обязательных свойств. Это должно решить вашу проблему.

Наконец, показ нам сообщения MIME, которое отправлено, было бы более полезным, чем отображение кода, по крайней мере, до обнаружения проблем взаимодействия с Outlook.

+0

Спасибо за комментарии! Добавление свойств, которые вы описали, устранило проблему, и я также изменил Content-Disposition from Inline to Attachment, который отсортировал проблему с пустыми сообщениями, форматируя приглашение в качестве вложения. –

+0

@MaijaVilkina Не могли бы вы опубликовать код, который сработал для вас? – Roark

+0

@Roark: вот скрипт, который работал для меня: http://pastebin.com/Rc9BJe02 –

 Смежные вопросы

  • Нет связанных вопросов^_^