Outlook Interop 从帐户发送消息
题
好吧,这个的规格有所改变。也许有人可以帮助我解决这个新问题。
用户所做的手动操作是在 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 并且将处于类似图书馆的领域 赎回.