You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中获取Outlook收件人接受/拒绝约会时的评论

获取Outlook约会收件人响应时的评论

要拿到收件人接受/拒绝约会时添加的评论,你得跳出AppointmentItem.Recipients的局限——因为评论并不是存在收件人对象里的,而是存储在收件人发送的**会议响应邮件(MeetingItem)**中。下面给你具体的实现思路和代码示例:

核心思路

当收件人对约会做出带评论的响应时,Outlook会自动生成对应的MeetingItem(会议响应邮件),这个邮件和原约会是关联的。我们可以通过原约会对象获取所有关联的会议响应,然后从中提取评论内容。

结合你的现有代码修改

假设你已经通过现有代码拿到了目标AppointmentItem,可以添加这段逻辑来获取评论:

using Outlook = Microsoft.Office.Interop.Outlook;

// 你的现有代码:获取目标约会项
Application Myoutlook = new Application();
Outlook.NameSpace OutlookNS = Myoutlook.GetNamespace("MAPI");
Outlook.AppointmentItem appt = Myoutlook.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar)
    .Items.Find("[Subject]='" + trainingName + "'") as Outlook.AppointmentItem;

if (appt == null)
{
    return null;
}

// 新增:遍历所有关联的会议响应邮件
foreach (Outlook.MeetingItem meetingResponse in appt.GetAssociatedMeetingItems())
{
    // 过滤出接受或拒绝的响应
    if (meetingResponse.MeetingResponseStatus == Outlook.OlResponseStatus.olResponseAccepted ||
        meetingResponse.MeetingResponseStatus == Outlook.OlResponseStatus.olResponseDeclined)
    {
        // 提取评论(响应邮件的正文就是收件人添加的评论)
        string responderComment = meetingResponse.Body;
        // 获取响应的发送人(即原约会的收件人)
        string responderName = meetingResponse.SenderName;

        // 这里可以根据你的需求处理评论,比如打印、存储等
        Console.WriteLine($"收件人 {responderName} 的响应评论:{responderComment}");
    }
}

关键注意事项

  • 引用程序集:确保你的项目已经引用了Microsoft.Office.Interop.Outlook,并添加了对应的using命名空间
  • 响应状态过滤:MeetingResponseStatus有多种枚举值,除了接受、拒绝,还有暂定、未响应等,你可以根据需求调整过滤条件
  • 实时监控场景:如果需要实时监控新的响应,可以订阅Application.NewMailEx事件,当有新邮件到达时,判断是否为会议响应邮件,再关联到对应的约会项获取评论

内容的提问来源于stack exchange,提问作者Vishal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:34:31