[英]Create appointments in Outlook calenders of employees using C# and Exchange 2019
我還不能在這里顯示任何代碼,因為我仍在分析是否有可能實現這一點。
在我們公司,我們有一個虛擬系統來制作和管理休假申請。 我現在應該檢查是否可以在申請人的 Outlook 日歷中輸入已批准的假期。
我需要一個遠程訪問日歷並輸入約會的中央解決方案。 我們目前使用 Mircosoft Exchange 2019 和 Office 365 的本地解決方案。
在我的研究過程中,我遇到了 EWS,但似乎 Exchange 2019 不再支持它。 有沒有可能我可以使用的另一種解決方案? 基本上我想用 C# 實現一個解決方案,但我也可以實現一個 Powershell 或 Java 解決方案。 但大多數時候我沒有找到真正的解決方案。
大多數情況下,這些示例總是在機器上本地或使用 2013 等較舊的 Exchange Server。我還沒有找到 2019 年的可靠信息。 我希望這里有人可以幫助我或給我一個提示。 或者,如果不可能的話,也很有幫助。
此致!
我目前正在研究解決方案。 成功后我會發布代碼!**
Exchange 2019 完全支持 EWS。
EWS 仍然是訪問 Exchange 的首選 API,即使 Microsoft 沒有為其添加任何新功能。
在客戶端,您可以使用 Outlook Object Model 及其Namespace.GetSharedDefaultFolder
方法。 擁有MAPIFolder
object 的實例后,您可以使用MAPIFolder.Items.Add
創建新約會。
我確實選擇了一些不同的方法,但我能夠讓它充分發揮作用。 我現在可以創建事件並在需要時刪除它們。
public void UpdateCalender()
{
ExchangeService Service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
Uri Url = new Uri("https://localmaildomain.sys/EWS/Exchange.asmx");
Service.Url = Url;
Service.Credentials = new NetworkCredential("service_user","service_password");
Folder inboxFolder = Folder.Bind(Service, new FolderId(WellKnownFolderName.Calendar, Temp.UserMail));
foreach (var entry in Temp.Positions)
{
if (!entry.Storno)
{
try
{
Appointment appointment = new Appointment(Service);
appointment.Subject = $"Urlaub/Vacation ({entry.Type})";
appointment.Body = $"{entry.Comment}";
appointment.IsAllDayEvent = true;
appointment.Start = entry.Date.AddSeconds(1);
appointment.End = entry.Date.AddSeconds(1);
appointment.LegacyFreeBusyStatus = LegacyFreeBusyStatus.OOF;
appointment.Save(inboxFolder.Id, SendInvitationsMode.SendToNone);
}
catch (Exception Ex)
{
Console.WriteLine($"Calender item could not be created! Exception: {Ex.ToString()}");
}
}
else
{
CalendarView view = new CalendarView(entry.Date, entry.Date);
FindItemsResults<Appointment> results = Service.FindAppointments(inboxFolder.Id,view);
foreach (var appointment in results)
{
if (appointment.Subject == $"Urlaub/Vacation ({entry.Type})" && appointment.Start == entry.Date)
{
try
{
appointment.Delete(DeleteMode.MoveToDeletedItems);
}
catch(Exception Ex)
{
Console.WriteLine($"Calender item could not be deleted! Exception: {Ex.ToString()}");
}
break;
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.