iCalendar .ics 在 iOS 上接受/拒绝

2022-01-11 00:00:00 icalendar calendar php ios

我创建了一个发送 iCalendar 活动邀请的 php 脚本(基于 RFC 5545).一切正常,但在 iPhone (iOS 4.2.1) 和 iPad (iOS 5.1) 上,我没有接受/拒绝事件的选项(显示为 mime-attachment.ics),只能将其添加到我的日历.在其他邮件客户端(outlook、thunderbird、gmail)中,这按预期工作.

I have created a php script that sends out iCalendar event invitations (based on RFC 5545). Everything works ok, but on iPhone (iOS 4.2.1) and iPad (iOS 5.1) I don't get an option to accept/decline the event (which appears as a mime-attachment.ics), only to add it to my calendar. In other mail clients (outlook, thunderbird, gmail) this works as expected.

iOS 的邮件客户端是否支持发送此类回复?如果是,有谁知道我应该指定什么来完成这项工作?

Does iOS' mail client support sending such responses? If yes, does anyone know what should I specify to make this work?

这是 ics 文件的示例内容:

Here's a sample content of the ics file:

BEGIN:VCALENDAR
PRODID:-//Some organization//some application//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
UID:20120920T150350Z-70@http://localhost/www/
CREATED:20120920T150350Z
DTSTAMP:20120921T080800Z
DTSTART:20120921T080800Z
DTEND:20120922T060800Z
DESCRIPTION:Please attend this sample meeting
SUMMARY:Invitation to attend training
LOCATION:Earth
ATTENDEE;RSVP=TRUE:mailto:periklis@example.com
ORGANIZER;CN=periklis@example.com:mailto:periklis@example.com
LAST-MODIFIED:20120921T080800Z
PRIORITY:5
SEQUENCE:0
STATUS:CONFIRMED
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR

推荐答案

仔细阅读了RFC,下面是我使用和工作的:

After carefully reading the RFC, here's what I used and worked:

BEGIN:VCALENDAR
PRODID:-//Some organization//some application//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
UID:20120925T072912Z-140@http://localhost/www/
CREATED:20120925T072912Z
DTSTAMP:20120922T090500Z
DTSTART:20120922T090500Z
DTEND:20120923T090500Z
DESCRIPTION:Please attend this sample meeting
SUMMARY:Invitation to attend training
LOCATION:Earth
ATTENDEE;RSVP=TRUE:mailto:periklis@example.com
ORGANIZER;CN=periklis@example.com:mailto:periklis@example.com
LAST-MODIFIED:20120922T090500Z
PRIORITY:5
SEQUENCE:0
STATUS:CONFIRMED
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR

还值得一提的是,上面的行必须用 分隔.所以我将每一行分配给一个数组成员,然后对数组进行内爆:

It's also worth mentioning that the above lines MUST be separated with . So I assigned each line to an array member and then imploded the array:

$message[]='BEGIN:VCALENDAR';
$message[]='PRODID:-//Some organization//some application//EN';
[...]
$message[]='END:VCALENDAR';

$message = implode("
", $message);

相关文章