在外发电子邮件 EWS 中设置回复地址

2023-11-30

运行交换 2013

我在 C# 服务中使用 EWS,该服务从服务帐户发送电子邮件。

我想让电子邮件有一个与发送帐户不同的回复地址,即通讯组列表地址。

我怎样才能做到这一点?这EmailMessage.ReplyTo字段是只读的。

Code:

ExchangeService service = new ExchangeService();
service.Credentials = EWScredentials;
service.Url = new Uri(string.Format("https://{0}/EWS/Exchange.asmx", ExchangePath));

EmailMessage message = new EmailMessage(service);
message.ToRecipients.AddRange(receipients);

//This didn't work
message.ReplyTo.Clear();
message.ReplyTo.Add(replyToAddress);

message.Subject = subject;
message.Body = html;
message.SendAndSaveCopy();

尽管我没有使用 powershell,但只有其他似乎相关的线程:如何使用 EWS 托管 API 设置消息回复地址?


您可以使用 PidTagReplyRecipientEntries 扩展属性https://msdn.microsoft.com/en-us/library/office/cc815710.aspx这样做例如

        EmailMessage DifferentReplyTo = new EmailMessage(service);
        DifferentReplyTo.Subject = "test";
        DifferentReplyTo.ToRecipients.Add("[email protected]");
        DifferentReplyTo.Body = new MessageBody("test");           
        ExtendedPropertyDefinition PidTagReplyRecipientEntries = new ExtendedPropertyDefinition(0x004F, MapiPropertyType.Binary);
        ExtendedPropertyDefinition PidTagReplyRecipientNames = new ExtendedPropertyDefinition(0x0050, MapiPropertyType.String);
        DifferentReplyTo.SetExtendedProperty(PidTagReplyRecipientEntries, ConvertHexStringToByteArray(GenerateFlatList("[email protected]", "jc")));
        DifferentReplyTo.SetExtendedProperty(PidTagReplyRecipientNames, "jc");
        DifferentReplyTo.SendAndSaveCopy();

    internal static String GenerateFlatList(String SMTPAddress, String DisplayName)
    {
        String abCount = "01000000";
        String AddressId = GenerateOneOff(SMTPAddress, DisplayName);
        return abCount + BitConverter.ToString(INT2LE((AddressId.Length / 2) + 4)).Replace("-", "") + BitConverter.ToString(INT2LE(AddressId.Length / 2)).Replace("-", "") + AddressId;
    }

    internal static String GenerateOneOff(String SMTPAddress,String DisplayName)
    {
        String Flags = "00000000";
        String ProviderUid = "812B1FA4BEA310199D6E00DD010F5402";
        String Version = "0000";
        String xFlags = "0190";
        String DisplayNameHex = BitConverter.ToString(UnicodeEncoding.Unicode.GetBytes(DisplayName + "\0")).Replace("-","");
        String SMTPAddressHex = BitConverter.ToString(UnicodeEncoding.Unicode.GetBytes(SMTPAddress + "\0")).Replace("-", "");
        String AddressType = BitConverter.ToString(UnicodeEncoding.Unicode.GetBytes("SMTP" + "\0")).Replace("-", "");
        return Flags + ProviderUid + Version + xFlags + DisplayNameHex + AddressType + SMTPAddressHex;
    }
    internal static byte[] INT2LE(int data)
    {
        byte[] b = new byte[4];
        b[0] = (byte)data;
        b[1] = (byte)(((uint)data >> 8) & 0xFF);
        b[2] = (byte)(((uint)data >> 16) & 0xFF);
        b[3] = (byte)(((uint)data >> 24) & 0xFF);
        return b;
    }
    internal static byte[] ConvertHexStringToByteArray(string hexString)
    {
        if (hexString.Length % 2 != 0)
        {
            throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hexString));
        }

        byte[] HexAsBytes = new byte[hexString.Length / 2];
        for (int index = 0; index < HexAsBytes.Length; index++)
        {
            string byteValue = hexString.Substring(index * 2, 2);
            HexAsBytes[index] = byte.Parse(byteValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
        }

        return HexAsBytes;
    }

干杯 格伦

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

在外发电子邮件 EWS 中设置回复地址 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • Pine脚本系列[string]到字符串转换

    我正在尝试从数组中读取符号 字符串 但是array get返回一个Series string 对象 而security只接受简单的字符串 我尝试转换为字符串 但它仍然给出 不接受系列 字符串 参数 错误 有办法让这项工作发挥作用吗 vers
  • 收集时出现奇怪的异常

    当我尝试添加 插入 删除到集合 或任何更改集合的操作 时 出现以下异常 集合已初始化 插入的项不为 null 且与集合 T 类型相同 任何人都可以告诉我为什么会发生这种情况吗 运行时遇到致命错误 错误的地址是0x60f41744 在线程上0
  • 使用 Paramiko 进行多重身份验证(密码和密钥)

    我有以下代码 import paramiko policy paramiko client WarningPolicy client paramiko client SSHClient client set missing host key
  • java 游戏定时器

    我已经用 java 创建了一个游戏 现在我只需要添加一个计时器 允许用户在 60 秒内玩 我在互联网上搜索并找到了 swing 和 util 包的计时器 你能给我一个在我的游戏中使用它的方法吗 如果你想要一些互动的东西 你可以使用Timer
  • 确定 GIF 动画状态?

    有没有办法通过javascript检测GIF图像的动画是否完成 不它不是 JavaScript 无法直接操作 GIF 但也许jsgif可以帮你
  • Python 3 中 execfile 的替代品? [复制]

    这个问题在这里已经有答案了 Python 2 有内置函数execfile 在 Python 3 0 中被删除 这个问题讨论了 Python 3 0 的替代方案 但有些相当大的变化已经做了从Python 3 0开始 最好的替代方案是什么exe
  • Azure DocumentDB - 源自脚本的请求无法引用除为其提交客户端请求的分区键之外的分区键

    使用 c Net 客户端 SDK 我调用 ExecuteStoredProcedureAsync 方法 如下所示 sproc response await client ExecuteStoredProcedureAsync
  • 在css中使用自定义字体时出错

    虽然我尝试通过 CSS 文件为我的网站使用自定义字体 但我没有获得所需的字体 并且仅显示默认字体 请检查 css 代码 如果需要任何更改 请告诉我 font face font family Myriad Pro src url Myria
  • 从与变量匹配的另一列查找值

    我有一个数据框 如下所示 animal id trait id sire id dam id 1 25 05 0 0 2 46 3 1 2 3 41 6 1 2 4 42 76 3 4 5 10 99 3 4 6 49 81 5 4 我想创
  • 从Google Apps脚本中的类似csv文件读取数据

    我有一个 Windows 脚本文件 尽管不是 Google Apps 脚本 它将数据输出到文本文件 该文件包含以逗号分隔的数字 类似于 CSV 文件 但以编程方式创建 我可以在 Excel 中将其作为 CSV 文件打开 该文件存储在我的 G
  • querySelectorAll - 我可以在选择器中添加“:after”吗?

    我可以在 JavaScript 中执行此操作吗 var Dim Back document querySelectorAll s1 after for var i 0 i lt Dim Back length i Dim Back i st
  • 使用 TPL 数据流的请求/响应模式

    我们遇到一个问题 在使用 TPL 数据流库时需要请求 响应模式 我们的问题是我们有一个调用依赖服务的 NET core API 依赖服务限制并发请求 我们的API不限制并发请求 因此 我们一次可以收到数千个请求 在这种情况下 依赖服务将在达
  • 如何编译wxsqlite3和sqlite以获得加密支持

    我正在开发一个基于 wxWidgets 的 C 项目 使用wxSqlite3访问sqlite数据库 并且工作正常 但我想为数据库添加一些加密 在这里我通过 wxSqlite3 访问加密数据库时遇到问题 据我所知 sqlite默认不支持加密
  • Ansible 使用了错误版本的 Python

    我已经处理这个问题几天了 我在树莓派上运行ansible 我已将Python3 7设为Python的默认版本 显然 Ansible 希望使用 Python 2 7 我已在 playbook 的 vars 中添加了版本 3 7 但这不会更改模
  • 在全屏 Win32 OpenGL 中处理最小化

    我正在尝试使用 Win32 和 OpenGL 创建一个全屏应用程序 我使用更改分辨率EnumDisplaySettings and ChangeDisplaySettings并且 OpenGL 功能运行良好 在其 WndProc 上 我处理
  • Swing 中的进度对话框

    我怎样才能制作模态JDialog没有按钮出现的持续时间需要Runnable实例完成并让该实例更新该对话框上的进度条 消息 显然意大利面条代码可能有效 但我正在寻找一种干净的设计 如果存在 您可能想调查一下进度监视器 如果操作时间较长 会自动
  • .Net 控制计算机之间大小的变化

    我有一个奇怪的问题 我需要弄清楚如何解决 过去几周我一直在我的笔记本电脑上开发一个项目 但是当我在其中一台工作电脑上打开程序时 很多控件的尺寸错误和重叠等 机器之间的差异是这样的 Laptop Windows 7 专业版 显示 1920 1
  • 在MySQL中,我们如何判断表的索引是否是聚集索引?

    在MySQL中 我们如何判断表的索引是否是聚集索引 我们可以用show index from table name获取有关表索引的信息 但我没有发现它显示每个索引是聚集的还是非聚集的 这样做的目的是MySQL中如果一个表有索引 那么该表就必
  • Django FormWizard 动态改变 form_list

    我在使用表单向导时遇到了一些问题 也许有人可以解释一下 根据 process step 方法中的文档字符串 我可以 动态更改 self form list 因此 根据我的项目需求 我将表单附加到 form list 中 我附加的表格包含问题
  • 在外发电子邮件 EWS 中设置回复地址

    运行交换 2013 我在 C 服务中使用 EWS 该服务从服务帐户发送电子邮件 我想让电子邮件有一个与发送帐户不同的回复地址 即通讯组列表地址 我怎样才能做到这一点 这EmailMessage ReplyTo字段是只读的 Code Exch