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

问题描述 投票:1回答:3

我正在尝试使用RDORecipients.AddMultiple函数向邮件添加大量收件人。

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

最后一行抛出异常SafeArrayTypeMismatchException(指定的数组不是预期的类型)。我尝试使用new和Array.CreateInstance(typeof(string),元素数)以不同的方式创建数组。我有一种感觉,我需要在托管/非托管代码之间做一些事情,但我不知道如何。这个或文档/ pinvoke签名是不正确的,但这是不可能的。

c# outlook-redemption
3个回答
0
投票

尝试将recipients变量声明为string []。


0
投票

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


0
投票

我发现解决方案是:

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

Array必须使用对象类型,并且不存在null元素,否则它将在AddMultiple()中抛出异常。

© www.soinside.com 2019 - 2024. All rights reserved.