【发布时间】:2022-04-29 11:40:10
【问题描述】:
我需要知道与会议请求相关联的帐户电子邮件地址(会议请求发送到的电子邮件地址):
string GetAssociatedAccountEmailAddress(Outlook.MeetingItem meetingItem)
{
//TODO: implement this method:
throw new NotImplementedException();
}
这是我尝试过的:
string GetAssociatedAccountEmailAddress1(Outlook.MeetingItem meetingItem)
{
Outlook.MAPIFolder folder = meetingItem.Parent;
Debug.WriteLine("Folder Name: {0}, Folder Path: {1}", folder.Name, folder.FolderPath);
Outlook.MAPIFolder folderParent = folder.Parent;
Debug.WriteLine("Folder Parent Name: {0}, Folder Parent Path: {1}", folderParent.Name, folderParent.FolderPath);
return folderParent.FolderPath.Replace("\\", "");
}
调试输出:
Folder Name: Inbox, Folder Path: \\\\foo@foo.com\Inbox
Folder Parent Name: foo@foo.com, Folder Parent Path: \\\\foo@foo.com
这个实现的问题是我不确定文件夹路径是否总是包含电子邮件地址。
我还尝试了以下方法:
string GetAssociatedAccountEmailAddress2(Outlook.MeetingItem meetingItem)
{
Outlook.MAPIFolder folder = meetingItem.Parent;
Outlook.MAPIFolder folderParent = folder.Parent;
Outlook.NameSpace ns = folderParent.Parent;
return ns.Accounts.Cast<Outlook.Account>()
.FirstOrDefault(x => meetingItem.Recipients.Cast<Outlook.Recipient>().Any(r => r.Address == x.SmtpAddress))
.SmtpAddress;
}
这样的问题是,如果我有两个帐户(foo@foo.com 和 bar@bar.com)并且会议请求被发送到两个帐户,那么我有两个会议请求但 GetAssociatedAccountEmailAddress2 返回相同的电子邮件地址。
仅供参考:我正在使用 VS 2015 为 Outlook 2013 开发 Outlook 插件。
【问题讨论】:
-
嗯,两个会议请求都有相同的收件人,所以难怪您会得到相同的结果 - 您的代码返回第一个匹配的地址。您需要查看父商店并找出其所有者。
-
@DmitryStreblechenko。什么的父母?我查看 GetAssociatedAccountEmailAddress1 上的父级,但它似乎不是正确的方法?你能详细说明一下吗?请。
-
我的意思是会议请求所在文件夹的父存储。
-
@DmitryStreblechenko 我如何才能找到店主帐户?我找不到直接关系
标签: c# outlook vsto outlook-addin