好吧,这个的规格有所改变。也许有人可以帮助我解决这个新问题。

用户所做的手动操作是在 Outlook(现在为 2007)中打开一条新邮件,其中公开了“发件人...”字段。他们打开此窗口,从全局地址列表中选择某个帐户,然后代表该帐户发送消息。

这可以吗?

我可以从全局地址列表中获取 AddressEntry,如下所示:

AddressList list = null;
foreach (AddressList addressList in _outlookApp.Session.AddressLists)
{
    if (addressList.Name.ToLower().Equals("global address list"))
    {
        list = addressList;
        break;
    }
}

if (list != null)
{
    AddressEntry entry = null;
    foreach (AddressEntry addressEntry in list.AddressEntries)
    {
        if (addressEntry.Name.ToLower().Equals("outgoing mail account"))
        {
            entry = addressEntry;
            break;
        }
    }
}

但我不确定是否可以从地址条目创建帐户类型。当他们选择发送地址时,这似乎是手动发生的。我如何在互操作中反映这一点?

谢谢!

(我原来的问题):

我开发了一个小型 C# 程序来使用 Outlook 2007 互操作发送电子邮件。客户要求不要使用默认帐户发送邮件 - 他们有一个需要使用的辅助帐户。

没问题 - 我使用 Microsoft.Office.Interop.Outlook.Account 类来访问可用帐户,并选择正确的帐户。

现在,事实证明他们需要这个才能在 Outlook 2003 中工作。当然,Account 类在 Outlook interop 11.0 中不存在。

如何使用 Outlook 2003 实现同样的效果?

提前致谢。

有帮助吗?

解决方案

唉...看来我回答更多的我自己在计算器上...

问题

无论如何,这是它是如何做:

(我认为它的工作原理为Outlook互操作性展示2003年和2007年,并且不使用赎回,甚至可能是赎回的作品怎么这部分,虽然我还没有看那个。)

message.PropertyAccessor
    .SetProperty("http://schemas.microsoft.com/mapi/proptag/0x00410102",
    message.PropertyAccessor.StringToBinary(entry.ID));

此模式条目和六角标识符对应于MAPI属性PR_SENT_REPRESENTING_ENTRYID。该“条目”变量是在问题的代码段获得的。

花了相当多的拖网通过网络找到的碎片,使这项工作。发现我不得不使用PR_SENT_REPRESENTING_ENTRYID属性在一个地方,一个事实,即0x00410102 == PR_SENT_REPRESENTING_ENTRYID在另一个,那你必须调用“StringToBinary”的事实?......不要问... :)感谢谁把所有的作品的人贴!

其他提示

你必须使用OOM吗,你可以使用System.Net.Mail吗?如果只是简单的邮件发送。我想这取决于你还做什么?

如果没有,我认为你将不得不使用扩展 Mapi 并且将处于类似图书馆的领域 赎回.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top