在 Redemption 中调用 RDORecipients.AddMultiple(ref Array, object) 时出现异常

Exception when calling RDORecipients.AddMultiple(ref Array, object) in Redemption

我正在尝试使用 RDORecipients.AddMultiple 功能将大量收件人添加到邮件中。

RDOSession session = new RDOSession();
RDOMail mail = session.CreateMsgFromMsgFile("test.msg", "IPM.Note");
List<string> recipientsList = {"test1@test.com", "test2@test.com"};
Array recipients = recipientsList.ToArray();
rdoMail.Recipients.AddMultiple(ref recipients, 1);

最后一行抛出异常 SafeArrayTypeMismatchException(指定的数组不是预期的类型)。我尝试使用 new 和 Array.CreateInstance(typeof(string), number of elements) 以不同的方式创建数组。我觉得我需要在 managed/unmanaged 代码之间做一些事情,但我不确定如何做。那个或 documentation/pinvoke 签名不正确,但这不太可能。

尝试将 recipients 变量声明为字符串[]。

我注意到 Recipients.Add(object) 方法的签名采用对象而不是字符串。在转换为 System.Array 之前,我尝试声明为 object[] 而不是 string[] 并且它起作用了。

我发现解决方案是:

RDOSession session = new RDOSession();
RDOMail mail = session.CreateMessageFromMsgFile("test.msg", "IPM.Note");
List<string> recipientsList = new List<string>{ "test1@test.com", "test2@test.com" };
Array recipients = recipientsList.ToArray<object>();
mail.Recipients.AddMultiple(ref recipients, 1);

Array必须是object类型,且不存在null元素,否则AddMultiple()会抛出异常