Outlook 无法识别 ics 消息

问题描述 投票:0回答:2

我正在尝试用 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 = "\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; ?>
php email calendar outlook icalendar
2个回答
1
投票

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

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

最后,向我们显示发送的实际 MIME 消息比显示代码更有用,至少在检测与 Outlook 的互操作问题方面是这样。


0
投票

我遇到了同样的问题,同一个文件在 Gmail 中运行良好,但对于 Microsft Outlook,我必须将以下示例添加到

ORGANIZER
标签中:

ORGANIZER;CN=Organizer Name;[email protected]**:mailto:[email protected]**
© www.soinside.com 2019 - 2024. All rights reserved.