Вытащить письмо из глобального списка адресов (не имя)
В настоящее время я пытаюсь извлечь электронные письма из списка рассылки из моего глобального списка адресов. У меня это частично функционирует прямо сейчас, под частичной я имею в виду, что в настоящее время я могу успешно получить имя списка рассылки, но не адрес электронной почты. Это то, что я до сих пор:
public class DistributionListDetails
{
public string DistributionListId { get; set; }
public string DistributionListEmail { get; set; }
}
public List<DistributionListDetails> DistributionListInformtion { get; set; }
[WebMethod]
public static List<DistributionListDetails> GetDistributionLists()
{
List<DistributionListDetails> distributionLists = new List<DistributionListDetails>();
//create Outlook application.
Outlook.Application oApp = new Outlook.Application();
//get Mapi NameSpace and Logon.
Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
//get Global Address List.
Outlook.AddressLists oDLs = oNS.AddressLists;
Outlook.AddressList oGal = oDLs["Global Address List"];
//get a specific distribution list.
string sDL = "TestDL";
Outlook.AddressEntries oEntries = oGal.AddressEntries;
Outlook.AddressEntry oDL = oEntries[sDL];
if (oDL.Manager != null)
distributionLists.Add(new DistributionListDetails
{
DistributionListId = oDL.Name,
DistributionListEmail = oDL.Manager.ToString()
});
//get all of the members of the distribution list.
oEntries = oDL.Members;
Outlook.AddressEntry oEntry = default(Outlook.AddressEntry);
//adding distribution lists to list
distributionLists.AddRange(oGal.AddressEntries.Cast<Outlook.AddressEntry>().Select(
x => new DistributionListDetails
{
DistributionListId = x.Name,
DistributionListEmail = x.Name
}).Take(400));
//log off.
oNS.Logoff();
//clean up.
oApp = null;
oNS = null;
oDLs = null;
oGal = null;
oEntries = null;
oEntry = null;
return distributionLists;
}
Я в основном использую Interop Outlook
сервис (которым я не в восторге), чтобы открыть Outlook и получить имя списков рассылки из глобального списка адресов. То, что я думал, что смогу сделать, чтобы получить адрес электронной почты DL, будет примерно таким в моем запросе LINQ:
DistributionListID = x.Email
Или что-то в этом роде, но это не дает мне никакой возможности. Мой конечный продукт - я хотел бы отправить списки рассылки по электронной почте из веб-приложения (поэтому мне нужен адрес электронной почты). Я думал, что смогу просто строго использовать имя, так как я использую Interop, и оно будет достаточно умным, чтобы отправить его по электронной почте, но я ошибся.
В настоящее время я бросаю это:
My Distribution List
Но он ожидает этого (это работает, я проверял это в отладке):
My Distribution List <MyDistributionListEmail@mycompany.com>
Итак, после всего этого, есть ли у кого-нибудь совет о том, как я могу получить адреса электронной почты DL?
1 ответ
Использование AddressEntry.Address
, Если вы хотите SMTP-сумматоры, используйте AddressEntry.GetExchangeUser().PrimarySmtpAddress
,
Не используйте LINQ с объектами OOM, используйте старый добрый цикл for.