使用 C# 发送 Outlook 会议请求

2024-02-14

我希望从 C# 发送 Outlook 会议请求。 我有下面的代码,它可以完成这项工作,但是。

string startTime1 = Convert.ToDateTime(startTime).ToString("yyyyMMddTHHmmssZ");
string endTime1 = Convert.ToDateTime(endTime).ToString("yyyyMMddTHHmmssZ");
SmtpClient sc = new SmtpClient("");

MailMessage msg = new MailMessage();

msg.From = new MailAddress("", "HR Self Service");
msg.To.Add(new MailAddress(emailto));
msg.Subject = "Holiday Approval";
msg.Body = emailbody;

StringBuilder str = new StringBuilder();
str.AppendLine("BEGIN:VCALENDAR");

//PRODID: identifier for the product that created the Calendar object
str.AppendLine("PRODID:-//ABC Company//Outlook MIMEDIR//EN");
str.AppendLine("VERSION:2.0");
str.AppendLine("METHOD:REQUEST");

str.AppendLine("BEGIN:VEVENT");

str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", startTime1));//TimeZoneInfo.ConvertTimeToUtc("BeginTime").ToString("yyyyMMddTHHmmssZ")));
str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", endTime1));//TimeZoneInfo.ConvertTimeToUtc("EndTime").ToString("yyyyMMddTHHmmssZ")));
str.AppendLine(string.Format("LOCATION: {0}", "Location"));

// UID should be unique.
str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));
str.AppendLine(string.Format("DESCRIPTION:{0}", msg.Body));
str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", msg.Body));
str.AppendLine(string.Format("SUMMARY:{0}", msg.Subject));

str.AppendLine("STATUS:CONFIRMED");
str.AppendLine("BEGIN:VALARM");
str.AppendLine("TRIGGER:-PT15M");
str.AppendLine("ACTION:Accept");
str.AppendLine("DESCRIPTION:Reminder");
str.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:BUSY");
str.AppendLine("END:VALARM");
str.AppendLine("END:VEVENT");

str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", msg.From.Address));
str.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE:mailto:{1}", msg.To[0].DisplayName, msg.To[0].Address));

str.AppendLine("END:VCALENDAR");
System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType("text/calendar");
ct.Parameters.Add("method", "REQUEST");
ct.Parameters.Add("name", "meeting.ics");
AlternateView avCal = AlternateView.CreateAlternateViewFromString(str.ToString(), ct);
msg.AlternateViews.Add(avCal);
//Response.Write(str);
// sc.ServicePoint.MaxIdleTime = 2;
sc.Send(msg);

发送邀请时,需要用户accept邀请,当用户接受邀请时,Outlook 日历显示状态为BUSY
有没有什么方法可以发送不需要用户接受的邀请并且 Outlook 日历显示为“不在办公室”? 我尝试过这两个部分,但没有成功

str.AppendLine("ACTION:Accept");
str.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:BUSY");

如果这是资源邮箱,您可以将其配置为自动接受会议邀请(文件 | 选项 | 日历 | 自动接受或拒绝)。

如果这是一个任意邮箱,未经所有者许可,不会发生任何事情。如果您有用户凭据,您能做的最好的事情就是使用 Outlook 对象模型/EWS/MAPI 直接访问邮箱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 发送 Outlook 会议请求 的相关文章

随机推荐

  • MYSQL - 从不同数据库中选择

    如何从两个不同的数据库中将同一查询中的数据选择到同一服务器中 这就是我正在做的事情 但我的查询不起作用 sqlquery SELECT FROM database 2 table 2 WHERE database 1 table 1 dat
  • 使用 MPNowPlayingInfoCenter 处理 CarPlay 中的播放事件

    我正在尝试构建一个带有 CarPlay 集成的示例音频应用程序 该应用程序是一个测试项目 没有 API 没有流媒体 没有复杂的 UI 只是一个简短的歌曲名称列表 具有选择歌曲并播放的功能 我的目标是在 正在播放 屏幕上按下播放按钮时处理回调
  • Java接口是抽象类吗? [复制]

    这个问题在这里已经有答案了 我正在做一些家庭作业 之前试卷上的一个问题要求命名给定 UML 图中的所有抽象类 我想相当简单 有1个抽象类和3个接口 一般来说 这些接口是否符合抽象类的资格 问题是 虽然从技术上讲 接口可以在 Java 等语言
  • 如何阻止 Linux 初始化 USB HID 设备

    我有一个 USB HID 设备 可以在两种不同的模式下工作 模式的选择基于发送给它的 USB 枚举 初始化数据包的顺序 我使用的是运行 Raspbian 的 Raspberry Pi 3 但是如果我为桌面 Ubuntu 发行版编译代码 我也
  • 模板通过 const 引用传递

    我已经看过一些类似的问题 但我仍然很困惑 我正在想办法明确地 不是通过编译器优化等 和 C 03 兼容 避免在将对象传递给对象时复制对象专门模板功能 这是我的测试代码 include
  • Java - 为什么我不能使用 charAt() 来查看一个 char 是否等于另一个?

    我想查看字符串中的字符是否等于某个其他字符值 但我不知道字符串中的字符是什么 所以我使用了这个 if fieldNames charAt 4 f 但我收到错误 Operator cannot be applied to char jav l
  • viewDidDisappear 没有在 UINavigationController 上被调用

    我的导航控制器有问题 如果我将视图控制器添加到堆栈中 void tui ToggleListStudy id sender listVC ListViewController alloc init self navigationContro
  • 将样式化的 pandas 数据框导出到 Excel

    我正在尝试使用以下脚本将时尚的数据框导出到 Excel 文件 import pandas as pd import numpy as np np random seed 24 df pd DataFrame A np linspace 1
  • PyCharm:为什么“音频”受到青睐?

    为什么audioop如果我想进口 请优先选择reverse 我的代码包含from django urls import reverse已经存在于许多文件中 为什么 PyCharm 不查看我的其他文件 然后将当前的第二个选项设为第一个选项 我
  • “目录名称无效。”等等,在Windows上使用rabbitmq-plugins

    我正在尝试通过以下方式让 RabbitMQ 在 Windows 10 上运行这些说明 http arcware net installing rabbitmq on windows 但是 当尝试通过 powershell 命令启用管理插件时
  • 使用 vue.js 获取调用元素

    我想获取 vue js 中调用 html 元素以通过 jQuery 修改它 现在 我为每个元素指定类名 索引 然后通过 jQuery 调用它 但这看起来像是一个疯狂的 hack 我想做的事 new Vue el app data testF
  • 为什么中序和前序遍历对于创建算法来确定 T2 是否是 T1 的子树很有用

    我正在看一本采访书 问题是 你有两个非常大的二叉树 T1 拥有数百万个节点 并且T2 有数百个节点 创建一个算法来决定是否T2是一个 的子树T1 作者提到这是一个可能的解决方案 请注意 这里的问题指定T1有数百万 节点 这意味着我们应该注意
  • 无法从 NGINX 获取包含句点的标头

    标题 Abp TenantId is null因为 如果删除 like AbpTenantId 一切都会安好的 如何添加标题 localhost debug 显示临时标头 根据客户请求显示 Request Headers Unknown 在
  • Material UI 网格列表行有一个很大的尴尬间隙

    我正在使用 Material UI 和 Reactjs 我对网格列表组件有疑问 我尝试使用网格 1000x1000px 因此我将自定义 gridList 样式中的高度和宽度分别指定为 1000 和 1000 如文档中所示 应有 10 列 每
  • 在多个节点上运行kafka connect分布式模式

    我正在测试一个卡夫卡连接器的弹性 我想在它运行时杀死一个工作人员 从而杀死连接器实例 最简单的方法可能是强制分布式模式在多个节点上运行 然后终止该节点上的工作进程 对吗 如何使 Kafka 将生成工作程序连接到不仅仅是其启动的节点上 这是在
  • 如何调试 Mac OS X 上的互斥锁问题?

    我正在尝试让 gdb lldb 存根为我正在制作的程序工作 现在它似乎使调试器陷入僵局 所以我 讽刺的是 在我的机器上调试 lldb 以尝试找出问题所在 lldb 正在尝试锁定互斥体 并且似乎陷入僵局 在 Windows 上 我知道你可以使
  • java连接到sql server 2008express

    我尝试连接到我的 BD 这是我的代码 public class JavaSQLTest param args the command line arguments public static void main String args tr
  • 运行scala代码jar出现NoSuchMethodError:scala.Predef$.refArrayOps

    我的代码在idea中通过本地模式可以正常运行 当我打印成jar包上传到我部署的SPARK服务器上运行时 出现NoSuchMethodError scala 预定义 refArrayOps 出现了 出错的那行代码如下val expectArr
  • 单元测试应该涵盖压力测试吗?

    我想知道你们是否有任何好的读物来考虑将什么分类为单元测试 验收 集成测试 我有以下场景 我们在工作中就是否应该在单元测试中进行了一些辩论 在我们的数据访问层 有些语句使用了sql比如 select from people where id
  • 使用 C# 发送 Outlook 会议请求

    我希望从 C 发送 Outlook 会议请求 我有下面的代码 它可以完成这项工作 但是 string startTime1 Convert ToDateTime startTime ToString yyyyMMddTHHmmssZ str