6 回答
这是一个老问题,但我认为它是由使用 METHOD:REQUEST 引起的,这标志着 ical 应该更新,而不是它是一个新项目。相反,使用 METHOD:PUBLISH
我可以确认这适用于 DDay.iCal 和 Outlook 日历。
这让我发疯了一个星期,所以很高兴看到其他人证实了我的怀疑。其实有一个比较简单的方案,解决了这个问题,虽然不是很优雅。我可以理解为什么不允许从外部来源担任组织者的角色,但令人讨厌的是你不能。
发出 2 个邀请。一个给自己(或任何组织者),然后另一个给其他人。
你自己应该有其他东西,而不是你作为组织者,例如组织者:donotreply@outlook.com
作为组织者,其他所有人都应该将您的电子邮件记录下来。
要使这种方法起作用,您应该设置 METHOD:REQUEST。如果您将其设置为 PUBLISH,您将获得更新的重复项。
这种方法意味着您可以在日记中获得会议并获得回复(要获得回复,您需要为每个与会者添加以下行:ATTENDEE;CN="The Name";RSVP=TRUE:mailto:the_email@address.com .)
请注意,两个版本的文件的 UID 相同。如果组织者首先获得邀请,这样他们就可以在开始收到回复之前接受它,这会有所帮助,否则人们将回复实际上尚不存在的内容。这不会阻止他们接受邀请,但对于组织者来说可能有点混乱。为了解决这个问题,我在电子邮件 1 和 2 之间稍作延迟。
我认为您的问题是因为 Exchange 假定活动的组织者也是活动的发起者。这似乎很公平,否则将会议发送给使他们成为组织者的人将是轻而易举的事情,并且它们将自动添加到该人的日历中。
说了这么多,不知道如何解决这个问题。
通过电子邮件发送事件邀请的行为在 rfc6047 中进行了描述,进一步扩展了 icalendar RFC (RFC5545)。
关于安全的第 2 节和第 3 节总结了两种欺骗威胁:
欺骗“组织者”,欺骗“与会者”
那是
不允许spoof@xyz.example.net 修改或取消由a@example.com 组织的会议。
你的情况:
- 您是否从与您的交换相同的电子邮件地址发送邀请(谈论
From:
邮件中的而不是Organizer:mailto
?如果不是,则可能值得尝试通过交换地址发送。 - 上面应该不起作用,为了满足组织者在其日历中包含邀请的需要,您可能需要以编程方式将其添加到组织者的议程中,因为 CUA(日历用户代理)或 Exchange 可能不允许第三派对邮件程序在议程中添加事件而无需最终用户 UI 使用。
最近几个月,我们的服务也遇到了和你一样的问题:我们的服务为组织者和参加者创建会议日历,如果参加者包含组织者,组织者(作为参加者)可以收到日历邮件,但都不允许接收/拒绝会议(按钮被禁用)也不能在日历中看到它(没有日历事件)。
最后,我注意到只有在以下条件下才会发生这种情况: 1. mail.From = Organizer 2. Ateendees.contains(organizer) //不区分大小写。
所以,我只是将我的代码更改为 follwing ,它适用于所有与会者(包括组织者):
if (!attendeeEmail.ToLower().Contains(organizer.Address.ToLower()))
{
message.From = organizer;
}
else
{
//such as your actual email sender, in our case, our mail sender use another email,
//say ActualSender,and if leave empty, then our mail sender will fill as:
message.From = ActualSenderEmail;
}