Я разрабатываю надстройку Outlook с помощью надстройки Express. Когда я получаю почтовый ящик «Исходящие», я вижу свой адрес электронной почты в разделе «mailItem.SenderEmailAddress» в формате x500. Есть ли способ преобразовать его в адрес электронной почты SMTP.
Вот мой код:
Outlook.Explorer expl = null;
Outlook.Selection selection = null;
Outlook.MailItem mailItem = null;
Outlook.Recipient recipient = null;
string recipientsEmail = "";
try
{
expl = Globals.ObjOutlook.ActiveExplorer() as Outlook.Explorer; ;
if (expl != null)
{
selection = expl.Selection;
if (selection.Count == 1)
{
if (selection[1] is Outlook.MailItem)
{
mailItem = (selection[1] as Outlook.MailItem);
if (mailItem != null)
{
string senderEmailAddress = mailItem.SenderEmailAddress;
Что я пробовал и добился успеха: - Я знаю, как преобразовать тип x500 в SMTP с помощью объекта Outlook.Recipient. Там я могу получить «addressEntry» Получателя и получить ExhangeUser, а затем перейти к «PrimarySmtpAddress» ExhangeUser. Но я не совсем уверен в том, как работать с SenderEmailAddress и преобразовывать его как SMTP.
Некоторые интересные эксперименты: - Поскольку свойство «Sender» недоступно в текущем объекте mailitem, мне удалось использовать отражение, чтобы получить свойство «Sender». Но когда я запускаю следующий код, значение объекта propertyInfo становится нулевым. Я не могу понять почему.
Вот код
//...
if (mailItem != null)
{
var mailItem2 = GetNewObject(mailItem, "Sender", intArray);
//...
public static object GetNewObject(Outlook.MailItem o, string popertyName, object[] parameters)
{
try
{
PropertyInfo propertyInfo = o.GetType().GetProperty(popertyName); // This object is getting null
return propertyInfo.GetType().GetProperty(popertyName).GetValue(o,parameters) as Outlook.MailItem;
}
catch (MissingMethodException ex)
{
// discard or do something
Debug.DebugMessage(2, "AddinModule : Error in GetNewObject() : " + ex.Message);
return null;
}
}
Пожалуйста, посоветуй мне. Спасибо.