Outlook 无法识别 ics 消息



我正在尝试在PHP中创建一个邮寄给用户的.ics文件。该解决方案在Gmail中运行良好(我收到一个花哨的邀请,所有信息都出现在正确的位置),但Outlook似乎根本无法识别它。我收到一封没有附件的空电子邮件,据我所知,没有将任何事件添加到任何日历中。

我怀疑问题出在标题的某个地方,但我对邮件协议的经验很少,无法查明它。我整天都在摆弄这个,请帮忙:(

更新:由于某种奇怪的原因,我确实收到了邀请,它在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 = "rn";
$headers = "From: InnovationskontorEtt Dashboard <admin@innovationskontorett.se>n";
$headers .= "MIME-Version: 1.0n";
$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 = 'maija.vilkina@liu.se';
/*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; ?>

通常,最佳做法是至少发送多部分/替代项,以便对文本/日历格式一无所知的客户端可以向用户显示可读消息。有关示例,请参阅 https://www.rfc-editor.org/rfc/rfc6047#section-4.2。

然后,要使邀请成为实际邀请,它至少需要有一个组织者和一个 ATTENDEE 属性。有关必需属性的列表,请参阅 https://www.rfc-editor.org/rfc/rfc5546#section-3.2.2。这应该可以解决您的问题。

最后,向我们展示发送的实际 MIME 邮件将比显示代码更有用,至少就检测 Outlook 的互操作问题而言。

最新更新