1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvida Leitura de caixa de entrada pelo progress

Discussão em 'Progress 4GL' iniciado por brunoowr, Agosto 24, 2016.

  1. brunoowr

    brunoowr Membro Participativo

    Existe alguma forma de ler uma caixa de entrada pelo progress?
    Preciso gerar uma lista dos assuntos de todas as mensagens.
  2. ds201

    ds201 Membro Participativo

    Boa noite

    Olhas estes dois fontes (que não são meus).
    Eles podem te ajudar.

    Sds
    Código:
    /*
    -------------------------------------------------------------------------
    APLICAۂO      : GRUPO HELIOTEXTIL
    PROGRAMA       :
    DESCRI€ÇO      : ENTRA NUMA PASTA E COPIA OS ENDERE€OS PARA UMA TEMP-TABLE
                     -> PODE TER UM ENDERE€O ESPECIFICO
    AUTOR          : BALTAZAR OLIVEIRA
    DATA           : 2009.09.07
    -------------------------------------------------------------------------
    */
    
    /*
                            PAR¶METROS DE ENTRADA
    -------------------------------------------------------------------------
    01 i-pastaBase          PASTA BASE
    02 i-pastaOrigem        PASTA ORIGEM
    03 i-caminhoCopia       CAMINHO DA CàPIA
    -------------------------------------------------------------------------
    */
    
    /*
                            PAR¶METROS DE SAÖDA
    -------------------------------------------------------------------------
    01 o-estado             CàDIGO DE ERRO:
                            0 - SEM ERRO
                            1 - NÇO FOI POSSÖVEL ABRIR A APLICA€ÇO OUTLOOK
    -------------------------------------------------------------------------
    */
    
    /* def output  param   o-estado            as  int init 0.*/
    def var o-estado as int init 0.
    
    /*
                            VARIµVEIS LOCAIS
    -------------------------------------------------------------------------
    01 chOutlook            HANDLE DA APLICAۂO OUTLOOK
    
    02 chNamespace          HANDLE PARA ACEDER AS PASTAS DO OUTLOOK
    03 chInbox              HANDLE PARA IR A UMA PASTA PREDEFINIDA DO OUTLOOK
    04 ChFolder             HANDLE DA PASTA
    
    05 chItems              HANDLE DOS ITEMS
    06 ChAttachs            HANDLE DOS ANEXOS
    -------------------------------------------------------------------------
    */
    
    def var chOutlook           as  com-handle.
    
    def var chNameSpace         as  com-handle.
    def var chInbox             as  com-handle.
    def var ChItems             as  com-handle.
    
    
    /* TEMP-TABLE */
    
    def temp-table tt_Emails no-undo
    
        field   nr_mensagem     as  int
        field   data_mensagem   as  date
        /*
        field   nome_emissor    as  char
        field   email_emissor   as  char
        field   assunto         as  char
        */
        field   corpo           as  char.
        /*field   corpoSELEC      as  char. */
       
    /* VARIAVEIS */
    
    def var i                   as  int.
    
    def var x-numMsgs           as  int.
    def var x-NumAnexos         as  int.
    def var x-NumAnexos_Msg     as  int.
    def var x-compr             as  int.
    
    /*
    ------------------------
    ABRE A APLICAۂO OUTLOOK
    ------------------------
    */
    
    create "Outlook.Application" chOutlook no-error.
    
    if error-status:num-messages > 0 then do:
    
        o-estado = 1.
        message "NÆo foi poss¡vel abrir a aplica‡Æo Outlook"
                view-as alert-box error.
        return.
    
    end.
    
    /*
    ---------------------------------------------------------------------------
    PERMITE O ACESSO AOS DADOS(PASTAS,MENSAGENS) QUE ESTÇO NA APLICA€ÇO OUTLOOK
    ---------------------------------------------------------------------------
    */
    
    chNameSpace = chOutlook:GetnameSpace("MAPI").
    
    /*
    --------------------------------------------------------------------
    ENTRA NA PASTA 'A RECEBER'
    (3 - ITENS ELIMINADOS,4 - A ENVIAR, 5 - ITENS ENVIADOS,6 - A RECEBER
    9 - CALENDµRIO,10 - CONTACTOS,11 - DIµRIO,12 - NOTAS,13 - TAREFAS)
    --------------------------------------------------------------------
    */
    
    chInbox = chNamespace:GetDefaultFolder(6).
    
    /*
    -------------------------------------------------
    CONTA E TESTA O NR DE MENSAGENS DA PASTA DEFINIDA
    -------------------------------------------------
    */
    
    x-numMsgs = ChInbox:items:count.
    
    /* -- */
    
    if x-NumMsgs = 0 then do:
    
        message "NÆo existem Mensagens na pasta definida"
                view-as alert-box error.
        return.
    
    end.
    
    
    ChItems = ChInbox:items.
    
    /**/
    
    do i = 1 to x-numMsgs:
    
        /* if ChItems:item(i):class = 46 /* RECIBOS */ and ChItems:item(i):Subject begins "NÆo foi poss¡vel" then do: */
       
        /* TEMP-TABLE */
    
            find    tt_emails   where
                    tt_emails.nr_mensagem   =   i
                    exclusive-lock no-error.
       
            if not available tt_emails then do:
                   
                create tt_emails.
                assign
                    tt_emails.nr_mensagem     = i
                    /* tt_emails.nome_emissor    = ChItems:item(i):Sender */
                    tt_emails.data_mensagem   = chItems:item(i):CreationTime
                    /*tt_emails.assunto       = ChItems:item(i):Subject */
                    /*tt_emails.corpo         = ChItems:item(i):Body. */
                   
                    tt_emails.corpo         = substring(ChItems:item(i):Body,28,50).
                   
            end.
    
        /* end. */
    
        /* ==== */
    
    
        /*
        if ChItems:item(i):SenderEmailAddress = "postmaster@asp.telepac.pt" then do:
           
            if not available tt_emails then do:
    
                /*
                create tt_emails.
            assign
                tt_emails.nr_recibo     = i
                tt_emails.data_recibo   = chItems:item(i):CreationTime.
                tt_emails.assunto       = ChItems:item(i):Subject.
                */
           
                create tt_emails.
                assign
                    tt_emails.nr_mensagem   = i
                    tt_emails.data_mensagem = chItems:item(i):ReceivedTime.
                    /* tt_emails.nome_emissor  = ChItems:item(i):SenderName. */
                    tt_emails.email_emissor = ChItems:item(i):SenderEmailAddress.
                    tt_emails.assunto       = ChItems:item(i):Subject.
    
            end.
        end.
        */
    end.
    
    /*
    ---------------------------------------
    FAZ UM "RELEASE OBJECT" AOS COM-HANDLES
    ---------------------------------------
    */
    
    release object chOutlook.
    release object chNameSpace.
    release object chInbox.
    release object chItems no-error.
    
    /*
    release object ChFolderBase.
    release object ChFolder.
    release object ChAttachs.
    */
    
    /* EXPORT */
    
    def stream texto.
    output stream texto to "C:\temp\Email_aReceber.txt".
    
    for each tt_EMails:
    
        export stream texto delimiter ";" tt_Emails.
    
    end.
    
    output stream texto close.
    
    message "CONCLUIDO!"
        view-as alert-box info.
    
    
    
    /*=========================================================================*/
    Código:
    /*
    -------------------------------------------------------------------------
    APLICAۂO      : GRUPO HELIOTEXTIL
    PROGRAMA       : BASEADO NO hl_s0022.p
    DESCRIۂO      : ENTRA NUMA PASTA E COPIA OS ANEXOS DAS MSGS PARA
                     UMA PASTA PR-DEFINIDA
    AUTOR          : BALTAZAR OLIVEIRA
    DATA           : 2007.10.28
    -------------------------------------------------------------------------
    */
    
    /*
                            PAR¶METROS DE ENTRADA
    -------------------------------------------------------------------------
    02 i-pastaOrigem        PASTA ORIGEM
    03 i-caminhoCopia       CAMINHO DA CàPIA
    -------------------------------------------------------------------------
    */
    
    /*--- Pasta do Outlook abaixo de "Caixa de entrada" ---*/              
    /* Lˆ a pasta 'Caixa de entrada'. [06] */
    /* Abaixo da 'Caixa de entrada' h  a pasta 'Div'. */
    /*--- Faz par com "chInbox = chNamespace:GetDefaultFolder(6)." ------*/
    
    def var     i-pastaOrigem       as  char init "Div".
    
    def var     i-CaminhoCopia      as  char init "C:\Temp\Anexos\".
    
    /*
                            PAR¶METROS DE SAÖDA
    -------------------------------------------------------------------------
    01 o-estado             CàDIGO DE ERRO:
                            0 - SEM ERRO
                            1 - NÇO FOI POSSÖVEL ABRIR A APLICA€ÇO OUTLOOK
    -------------------------------------------------------------------------
    */
    
    def var   o-estado            as  int init 0.
    
    /*
                            VARIµVEIS LOCAIS
    -------------------------------------------------------------------------
    01 chOutlook            HANDLE DA APLICAۂO OUTLOOK
    
    02 chNamespace          HANDLE PARA ACEDER AS PASTAS DO OUTLOOK
    03 chInbox              HANDLE PARA IR A UMA PASTA PREDEFINIDA DO OUTLOOK
    04 ChFolder             HANDLE DA PASTA
    
    05 chItems              HANDLE DOS ITEMS
    06 ChAttachs            HANDLE DOS ANEXOS
    -------------------------------------------------------------------------
    */
    
    def var chOutlook           as  com-handle.
    
    def var chNameSpace         as  com-handle.
    def var chInbox             as  com-handle.
    def var chFolder            as  com-handle.
    
    def var ChItems             as  com-handle.
    def var ChAttachs           as  com-handle.
    
    /* VARIAVEIS */
    def var i                   as  int.
    def var j                   as  int.
    
    def var x-numMsgs           as  int.
    def var x-NumAnexos         as  int.
    def var x-NumAnexos_Msg     as  int.
    def var x-compr             as  int.
    
    /*
    ------------------------
    ABRE A APLICAۂO OUTLOOK
    ------------------------
    */
    
    create "Outlook.Application" chOutlook no-error.
    
    if error-status:num-messages > 0 then do:
    
        o-estado = 1.
        message "NÆo foi poss¡vel abrir a aplica‡Æo Outlook"
                view-as alert-box error.
        return.
    
    end.
    
    /*
    ---------------------------------------------------------------------------
    PERMITE O ACESSO AOS DADOS(PASTAS, MENSAGENS, Etc) QUE ESTÇO NA APLICA€ÇO OUTLOOK
    ---------------------------------------------------------------------------
    */
    
    chNameSpace = chOutlook:GetnameSpace("MAPI").
    
    /*
    --------------------------------------------------------------------
    Lˆ a pasta 'Caixa de entrada'. [06]
    Abaixo da 'Caixa de entrada' h  a pasta 'Div'.
    
    C¢digos:
       03 - Mensagens exclu¡das
       04 - Caixa de sa¡da
       05 - Mensagens enviadas
       06 - Caixa de entrada
       09 - CALENDµRIO
       10 - Contatos
       11 - DIµRIO
       12 - NOTAS
       13 - TAREFAS
    --------------------------------------------------------------------
    */
    
    chInbox = chNamespace:GetDefaultFolder(6). /*--- ENTRA NA PASTA 'Caixa de entrada'. ---*/
    
    /*
    ------------------------------
    ENTRA NA PASTA ORIGEM DEFINIDA
    ------------------------------
    */
    
    ChFolder = ChInbox:Folders:item(i-pastaOrigem) no-error.
    
    if error-status:num-messages > 0 then do:
        message "Pasta Origem Inexistente"
                view-as alert-box error.
        return.
    end.
    
    /*
    -------------------------------------------------
    CONTA E TESTA O NR DE MENSAGENS DA PASTA DEFINIDA
    -------------------------------------------------
    */
    
    x-numMsgs = ChFolder:items:count.
    
    /* -- */
    
    if x-NumMsgs = 0 then do:
        message "NÆo existem Mensagens na pasta " + i-PastaOrigem
                view-as alert-box error.
        return.
    end.
    
    /*
    --------------------------------
    TESTA SE AS MENSAGENS TEM ANEXOS
    --------------------------------
    */
    
    ChItems = ChFolder:items.
    
    /* -- */
    
    do i = 1 to x-numMsgs:
        x-NumAnexos = x-NumAnexos + ChItems:item(i):Attachments:count.
    end.
    
    /* -- */
    
    if x-NumAnexos = 0 then do:
        message "NÆo existem Anexos nas Mensagens da pasta " + i-PastaOrigem
                view-as alert-box error.
        return.
    end.
    
    /*
    ----------------------------
    COPIA OS ANEXOS PARA O DISCO
    ----------------------------
    */
    
    /* SE NÇO EXISTIR A PASTA, CRIA-A */
    
    os-create-dir value(i-CaminhoCopia) no-error.
    
    /* -- */
    
    do i = 1 to x-numMsgs:
        /* NR DE ANEXOS POR MSG */
    
        x-NumAnexos_Msg = ChItems:item(i):Attachments:count.
    
        do j = 1 to x-numAnexos_Msg:
            ChAttachs = ChItems:item(i):Attachments.
            ChAttachs:item(j):SaveasFile(i-CaminhoCopia + ChAttachs:item(j):filename).
        end.
    end.
    
    /*
    ---------------------------------------
    FAZ UM "RELEASE OBJECT" AOS COM-HANDLES
    ---------------------------------------
    */
    release object chOutlook.
    release object chNameSpace.
    release object chInbox.
    release object ChFolder.
    release object chItems.
    release object ChAttachs.
    /*--- fim ---*/
    

Compartilhe esta Página