Читать "активное" почтовое сообщение в действии контекстного меню Outlook?
Привет, я пытаюсь прочитать содержимое электронной почты по нажатию пользовательской кнопки в Outlook. То есть: щелкните правой кнопкой мыши на письме, а на выбранной почте нажмите пользовательскую кнопку GoToApp, и она должна прочитать все содержимое письма, включая текст, информацию о вложении, а также обычный текст и изображение, к которому я прикрепил снимок страницы внешнего вида.
Я старался
Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.ApplicationClass();
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");
Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
if (myInbox.Items.Count > 0) {
// Grab the Subject
lblSubject.Text = ((Microsoft.Office.Interop.Outlook.MailItem)myInbox.Items[1]).Subject;
}
Хотя это не работает, это потому, что почта не находится в папке по умолчанию.
как я могу достичь этого, пожалуйста, помогите.
спасибо Нихил
2 ответа
В событии ItemContextMenuDisplay (которое вызывается при щелчке правой кнопкой мыши) существует объект Outlook.Selection, переданный в качестве второго параметра.
Используйте этот выбор, чтобы определить текущие выбранные / активные элементы, если таковые имеются. Объекты нужно будет привести к MailItem
по мере необходимости. (Помните, индексы в объектной модели Outlook начинаются с 1, а не с 0.)
Невозможно определить точный элемент, по которому был выполнен щелчок правой кнопкой мыши (может быть выбрано несколько элементов или не может быть выбранных элементов), но элемент, по которому был выполнен щелчок правой кнопкой мыши, будет одним из выбранных элементов., Кроме того, элемент, находящийся в данный момент в области чтения, может не соответствовать выбранным элементам.
Удачного кодирования.
Это обратный вызов ленты для пользовательской кнопки ленты в контекстном меню MailItem.
public void BtnClickHandler(Office.IRibbonControl btn)
{
var ex = btn?.Context?.Parent as Outlook.Explorer;
if (ex == null) return;
foreach (var sel in ex.Selection)
{
var mailItem = sel as Outlook.MailItem;
if (mailItem != null) DoSomethingWith(mailItem);
}
}