如何在 C# 中为电子邮件设置 Outlook 扩展属性?

Posted

技术标签:

【中文标题】如何在 C# 中为电子邮件设置 Outlook 扩展属性?【英文标题】:How do I set Outlook extended properties on an email in C#? 【发布时间】:2012-01-21 22:13:44 【问题描述】:

我目前已经编写了代码,使用常用的 SMTPClient 和 MailMessage 对象在 C# 中发送电子邮件。

我的新要求是发送的电子邮件应该设置“权限”,就像用户通过 Outlook 发送电子邮件并使用功能区工具栏中的选项一样。要设置的权限是“不转发”选项。

在此处访问我希望在发送电子邮件时模拟的选项;

任何人都可以提供一些示例 .Net 代码来实现这一点,或者为我提供一个很好的在线代码参考吗?

提前致谢, 布赖恩。

【问题讨论】:

我不是 C# 人,但你能发布创建消息的代码吗? 【参考方案1】:

你好布赖恩我只有一个建议“Redemption”! 我已经使用它了,它很棒很容易实现所有者迪玛是非常好的人 他帮了很多忙。

PS:它不是免费的,但值得每一分钱。

【讨论】:

我看不到任何关于这个库如何满足我的要求的参考。您能提供更多信息吗? 我觉得你应该和主开发者一起检查一下dimastr.com/redemption/mapitable.htm【参考方案2】:

首先,我不知道如何仅使用标准 SMTP 消息 (MailMessage) 来设置 IRM(信息权限管理)权限。我相信 IRM 权限完全以 Outlook/Exchange 为中心,并且在 SMTP 标准中没有任何形式的表示。

您能够启用该权限的唯一方法是通过 Outlook 对象模型通过 Outlook 互操作程序集。我上面的 IamStalker 推荐了 Redemption,虽然 99% 的时间是所有与 Outlook 相关的正确答案,但不是解决这个特定问题的方法。因为 IRM(据我所知)在 MAPI 中没有表示形式,所以 Redemption 在这里不会有太大帮助;我不相信我在 Redemption 的对象模型上见过与 IRM 相关的属性。

您很可能会对 MailItem 对象类型公开的Permission 属性感兴趣。看来,为了以编程方式打开“不转发”选项,您需要将该属性的值设置为 OlPermission.olDoNotForward。

还有另一个与 IRM 相关的属性 (PermissionTemplateGuid),但您似乎可以将其保留为空字符串,因为您使用的是内置“权限”。

我会假设所有其他与 IRM 相关的设置都通过用户的 Outlook 配置文件提供给 Outlook。

祝你好运!

【讨论】:

感谢您的反馈。我将按照建议查看 Outlook OM。

以上是关于如何在 C# 中为电子邮件设置 Outlook 扩展属性?的主要内容,如果未能解决你的问题,请参考以下文章

c#代码怎么通过outlook发邮件

c# Outlook VSTO 插件,当邮箱处于仅标头模式时将下载新邮件

outlook如何设置为联机运行

outlook如何设置新邮件到达桌面通知?

如果 Outlook 关闭,则从 C# OOM 发送的电子邮件将保留在发件箱中,直到下一次 Outlook 启动

outlook邮箱邮箱快满了,如何解决?