Existe alguma forma de ler uma caixa de entrada pelo progress? Preciso gerar uma lista dos assuntos de todas as mensagens.
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 ---*/