6 に答える
これは少し古い問題ですが、 METHOD:REQUEST を使用したことが原因だと思います。これは、新しいアイテムではなく、ical を更新する必要があることを示しています。代わりに、METHOD:PUBLISH を使用してください
これが DDay.iCal と Outlook Calendars で動作することを確認できます。
これは私を一週間怒らせたので、私が疑ったことを他の誰かが確認するのを見るのはうれしい. それほどエレガントではありませんが、実際には、この問題を解決する比較的単純な解決策があります。外部ソースからオーガナイザーの役割を引き受けることが許可されない理由は理解できますが、それができないのは面倒です。
2 招待状を送信します。1 つは自分 (または主催者) に、次に別の 1 を他の人に。
自分宛てのメールには、主催者としてあなた以外の何かが必要です。例: ORGANIZER:donotreply@outlook.com
他の全員へのメールは、主催者としてあなたのメールアドレスをダウンさせる必要があります。
このアプローチを機能させるには、METHOD:REQUEST を設定する必要があります。PUBLISH に設定すると、更新時に重複が発生します。
このアプローチは、日記に会議を記録し、返信も受け取ることを意味します (返信を取得するには、出席者ごとに次の行を含める必要があります: ATTENDEE;CN="The Name";RSVP=TRUE:mailto:the_email@address.com .)
ファイルの両方のバージョンで UID が同じであることに注意してください。オーガナイザーが最初に招待状を受け取って、返信を受け取る前に招待状を受け入れることができると助かります。そうしないと、実際にはまだ存在しないものに返信することになります。招待を受け入れるのを止めることはありませんが、主催者にとっては少し混乱するかもしれません. これを支援するために、メール 1 と 2 の間にわずかな遅延を入れました。
ここ数か月、私たちのサービスもあなたと同じ問題に直面しています。私たちのサービスは、主催者と出席者の会議カレンダーを作成します。ミーティングを拒否する (ボタンが無効になっている) ことも、カレンダーに表示されることもありません (カレンダー イベントはありません)。
最後に、これが発生するのは次の条件の場合のみであることに気付きました。
したがって、コードを次のように変更するだけで、すべての出席者 (主催者を含む) に対して正常に機能します。
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;
}
電子メールで送信されるイベント招待の動作は rfc6047 で説明されており、icalendar RFC (RFC5545) をさらに拡張しています。
セキュリティに関するセクション 2とセクション 3は、2 つのスプーフィングの脅威をまとめたものです。
「主催者」のなりすまし、「参加者」のなりすまし
あれは
spoof@xyz.example.net は、a@example.com が主催した会議を変更またはキャンセルすることはできません。
あなたの場合:
- 交換と同じメール アドレスから招待状を送信しましたか (
From:
メールで ではなくについて話しOrganizer:mailto
ますか? そうでない場合は、交換アドレス経由で送信してみる価値があるかもしれません. - CUA (Calendar User Agent) または Exchange が 3 番目の招待を許可しない可能性があるため、主催者が招待状をカレンダーに含める必要性に対処するには、おそらく主催者の議題にプログラムで追加する必要があります。エンドユーザーの UI を使用せずに議題にイベントを追加するパーティー メーラー。
あなたの問題は、Exchange がイベントの主催者がイベントの発信者でもあると想定しているためだと思います。そうしないと、会議を主催者にする人に会議を送信するのは子供の遊びであり、会議はその人のカレンダーに自動的に追加されます。
とはいえ、問題を回避する方法はわかりません。