Compartilhar via


Criar um item remetível para uma conta específica com base na pasta atual (Outlook)

Quando você usa o método CreateItem do objeto Application para criar um item do Microsoft Outlook, o item é criado para a conta primária dessa sessão. Em uma sessão em que várias contas estejam definidas no perfil, você poderá criar um item para uma conta específica IMAP, POP ou do Microsoft Exchange. Se houver várias contas no perfil atual e você criar um item enviável na interface do usuário, por exemplo, clicando em Novo email ou Nova reunião, um inspetor exibe um novo item de email ou solicitação de reunião no modo Redigir, e você pode então selecionar a conta de onde quer enviar o item. Este tópico mostra como criar um item enviável programaticamente e enviá-lo usando uma conta de envio específica. O tópico tem dois exemplos de código que mostram como criar um MailItem e um AppointmentItem para uma conta específica determinada pela pasta atual no explorador ativo.

The following managed code is written in C#. To run a .NET Framework managed code sample that needs to call into a Component Object Model (COM), you must use an interop assembly that defines and maps managed interfaces to the COM objects in the object model type library. For Outlook, you can use Visual Studio and the Outlook Primary Interop Assembly (PIA). Before you run managed code samples for Outlook 2013, ensure that you have installed the Outlook 2013 PIA and have added a reference to the Microsoft Outlook 15.0 Object Library component in Visual Studio. Você deve usar o código a ThisAddIn seguir na classe de um suplemento do Outlook (usando ferramentas de desenvolvedor do Office para Visual Studio). The Application object in the code must be a trusted Outlook Application object provided by ThisAddIn.Globals. For more information about using the Outlook PIA to develop managed Outlook solutions, see the Outlook 2013 Primary Interop Assembly Reference on MSDN.

O primeiro método abaixo, CreateMailItemFromAccount, cria um MailItem para uma conta específica e o exibe no modo de composição; o repositório de entrega padrão da conta específica é o mesmo que o repositório para a pasta exibida no explorador ativo. O usuário atual da conta é definido como o remetente. CreateMailItemFromAccount primeiro identifica a conta apropriada correspondendo ao armazenamento da pasta atual (obtida da propriedade Folder.Store ) com o repositório de entrega padrão de cada conta (obtido com a propriedade Account.DeliveryStore ) que é definida na coleção Contas da sessão. CreateMailItemFromAccount em seguida, cria o MailItem. Para associar o item à conta, CreateMailItemFromAccount atribua o usuário da conta como o remetente do item definindo o objeto AddressEntry para o usuário da conta à propriedade Sender do MailItem. A atribuição da propriedade Sender é uma etapa importante porque, de outro modo, o MailItem seria criado como a conta principal. No final do método, CreateMailItemFromAccount exibe o MailItem. Observe que, se a pasta atual não estiver em um repositório de entrega, CreateMailItemFromAccount basta criar o MailItem para a conta primária da sessão.

private void CreateMailItemFromAccount() 
{ 
    Outlook.AddressEntry addrEntry = null; 
 
    // Get the store for the current folder. 
    Outlook.Folder folder = 
        Application.ActiveExplorer().CurrentFolder  
        as Outlook.Folder; 
    Outlook.Store store = folder.Store; 
     
    Outlook.Accounts accounts = 
        Application.Session.Accounts; 
 
    // Match the delivery store of each account with the  
    // store for the current folder. 
    foreach (Outlook.Account account in accounts) 
    { 
        if (account.DeliveryStore.StoreID ==  
            store.StoreID) 
        { 
            addrEntry = 
                account.CurrentUser.AddressEntry; 
            break; 
        } 
    } 
 
    // Create MailItem. Account is either the primary 
    // account or the account with a delivery store 
    // that matches the store for the current folder. 
    Outlook.MailItem mail = 
        Application.CreateItem( 
        Outlook.OlItemType.olMailItem) 
        as Outlook.MailItem; 
 
    if (addrEntry != null) 
    { 
        //Set Sender property. 
        mail.Sender = addrEntry; 
        mail.Display(false); 
    } 
} 

O próximo método, CreateMeetingRequestFromAccount, é semelhante a CreateMailItemFromAccount exceto que ele cria um AppointmentItem em vez de um MailItem e associa o AppointmentItem à conta usando sua propriedade SendUsingAccount . CreateMeetingRequestFromAccount cria um AppointmentItem na pasta Calendário de uma conta cujo repositório de entrega padrão é o mesmo que o repositório para a pasta exibida no gerenciador ativo. CreateMeetingRequestFromAccount primeiro identifica a conta apropriada correspondendo ao armazenamento da pasta atual (obtida da propriedade Folder.Store ) com o repositório de entrega padrão de cada conta (obtido com a propriedade Account.DeliveryStore ) que é definida na coleção Contas da sessão. CreateMeetingRequestFromAccount em seguida, cria o AppointmentItem. Para associar o item à conta, CreateMeetingRequestFromAccount atribua essa conta como a conta de envio do item definindo o objeto Account à propriedade SendUsingAccount do AppointmentItem. Atribuir a propriedade SendUsingAccount é a etapa importante porque, caso contrário, o AppointmentItem é criado para a conta primária. No final do método, CreateMeetingRequestFromAccount exibe o AppointmentItem. Observe que, se a pasta atual não estiver em um repositório de entrega, CreateMeetingRequestFromAccount basta criar o AppointmentItem para a conta primária da sessão.

private void CreateMeetingRequestFromAccount() 
{ 
    Outlook.Account acct = null; 
 
    // Get the store for the current folder. 
    Outlook.Folder folder = 
        Application.ActiveExplorer().CurrentFolder 
        as Outlook.Folder; 
    Outlook.Store store = folder.Store; 
 
    Outlook.Accounts accounts = 
        Application.Session.Accounts; 
 
    // Match the delivery store of each account with the  
    // store for the current folder. 
    foreach (Outlook.Account account in accounts) 
    { 
        if (account.DeliveryStore.StoreID == 
            store.StoreID) 
        { 
            acct = account; 
            break; 
        } 
    } 
  
    // Create AppointmentItem. Account is either the primary 
    // account or the account with a delivery store 
    // that matches the store for the current folder. 
    Outlook.AppointmentItem appt = 
        Application.CreateItem( 
        Outlook.OlItemType.olAppointmentItem) 
        as Outlook.AppointmentItem; 
 
    appt.MeetingStatus =  
        Outlook.OlMeetingStatus.olMeeting; 
    if (acct != null) 
    { 
        //Set SendUsingAccount property. 
        appt.SendUsingAccount=acct; 
        appt.Display(false); 
    } 
} 

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.