/ / Získajte doručené z Outlooku - vba, outlook, outlook-addin, outlook-vba, outlook-object-model

Získajte doručené pošty z programu Outlook - vba, outlook, outlook-addin, outlook-vba, outlook-object-model

V programe Outlook 2010 som nakonfiguroval dva účty Exchange, neviem však zistiť, ako sa dostať do priečinka Doručená pošta druhého účtu. Session.GetDefaultFolder() vždy vráťte prvú.

Dokonca aj vymenovanie účtov Session.Accounts, nájdenie správneho účtu a volanie Session.Account(found one).Store.GetDefaultFolder() vracia nesprávne doručené (z predvoleného výmenného účtu, nie zo sekundárneho).

odpovede:

4 pre odpoveď č. 1

Ukazuje to všetky dostupné doručené?

Sub LoopThroughInboxes

Dim ol As Outlook.Application
Dim ns As Outlook.NameSpace
Dim i As Long

Set ol = Outlook.Application
Set ns = ol.GetNamespace("MAPI")

For i = 1 To ns.Folders.Count
Debug.Print ns.Folders(i).Name
Next i

Ak áno, potom ns.Folders(i).Folders("Inbox") dostanete doručenú poštu pre každú poštovú schránku.


3 pre odpoveď č. 2

Namiesto Namespace.GetDefaultFolder použite Store.GetDefaultFolder. Upozorňujeme, že program Store.GetDefaultFolder bol pridaný v programe Outlook 2010. V predchádzajúcich verziách programu Outlook použite rozšírené MAPI (C ++ alebo Delphi) alebo vykúpenie (RDOStore.GetDefaultFolder.


3 pre odpoveď № 3

Prejdite do knižnice Mapix

Odkaz na knižnicu Mapix, ako je uvedený nižšie

Knižnica Mapix pre C ++ / MFC

Poznámka: Táto knižnica je platná pre e-maily doručenej pošty v MS Outlook


1 pre odpoveď č. 4

Možno ste sa už dlho vzdali tejto otázky, ale ide to ...

Rovnaký problém som mal už predtým a vyriešil som ho pridaním rozhrania API pre správu účtov programu Outlook. Toto je bohužiaľ pre vás orientované na rozhranie c ++. (Môj doplnok už bol vyvinutý v jazyku c ++)

Ďalej OOM (Outlook Object Model), ktorýPoužívanie doplnkov VBA a .NET má slabú (ak vôbec) podporu viacerých účtov. Pridaním do výmenných účtov ste do svojho profilu v podstate pridali viac účtov.

Možno budete musieť ísť nadol, pomocou MAPI s c ++ a potom pripojiť v API Outlook Account Management API. Je to veľa práce, ale presne to som urobil a fungovalo to ako kúzlo.

Tu je príklad: http://www.codeproject.com/KB/IP/IOlkAccountManager.aspx


0 pre odpoveď č. 5

Myslím, že je to starý, ale jedného dňa ho niekto môže potrebovať. Tu je kód na opakovanie všetkých priečinkov „Odoslaná pošta“ v programe Outlook. (Myslím, že to bude fungovať iba pre aplikáciu Outlook 2010 a novšiu verziu).

MSOutlook._NameSpace ns = Globals.ThisAddIn.Application.GetNamespace("MAPI");
var accounts = ns.Accounts;
foreach (MSOutlook.Account account in accounts)
{
try
{
// You might want to test if DeliveryStore is null, in case this account is not an Exchange account
MSOutlook.MAPIFolder sentFolder = account.DeliveryStore.GetDefaultFolder(MSOutlook.OlDefaultFolders.olFolderSentMail);
if(sentFolder != null)
{
SentItems = sentFolder.Items;
SentItems.ItemAdd += LogMethods.Items_Sent_ItemAdd;
}
}
catch (Exception e)
{
BaseClass.log.Log(LoggLevel.Warning, e.Message);
}
}