Jump to content
Fivewin Brasil

receber e-mail com os anexos


marcioe

Recommended Posts

Amigos estou precisando de algo parecido com isso

Preciso Receber os e-mails de XML das notas fiscais.

em um unico e-mail podem (xml_nfe@coopmontenegro.com.br ) vir 2000 em um unico e-mail

xml_nfe@coopmontenegro.com.br

nesse e-mail vai chegar diversas NOTAS FISCAIS. eu preciso baixar todos os XML e salvar na maquina C:\XML_IMPORTAR

PRECISO APAGAR O E-MAIL QUE EU BAIXAR

agradeço aos amigos...

Link to comment
Share on other sites

Marcio, eu vi uma vez algo neste sentido no site do Lailton, tinha lá um anuncio de um código que ele fez para receber e-mail através do FW... agora, se recebia anexo ai não sei te dizer. Mas mesmo que isso que te falei realmente o Lailton tenha feito... o site parece que não esta mais no ar!

E não sei se alguém tem o contato dele...

Link to comment
Share on other sites

Blz Amigo, Everton

Demais amigos, Não precisa ser via fivewin Pode ser um Programa externo. O OUTLOOK mas não consegui que ele salve automaticamente o ANEXO em uma pasta, pois eu só preciso do ANEXO... que é (numero_chave_nfe_.XML)

O problema é que os anexos precisam ser baixados e salvos em tipo assim C:\XML_RECEBIDOS

Link to comment
Share on other sites

Olá Marcio!

Você pode tentar tmb uma opção de transferencia de dados fia FTP, ou seja, você cria uma opção no programa para que o usuário enviei os arquivos para você em um FTP especifico, e você lê este arquivo no FTP... Salva, altera, renomeia, deleta com mais facilidade, tudo via codigo.

Eu utilizo uma rotina de FTP para fazer atualização do Sistema, quase a mesma ideia.

Link to comment
Share on other sites

Marcio, veja como usamos aqui para baixar os XML por email:


FUNCTION RECEBE_EMAIL(cPOP,cUSE,cPWD)
/*
   recebimento de email pelo sistema

   PARAMETROS; cPOP = SERVIDOR POP [OBRIGATORIO]
               cUSE = LOGIN DO USUÁRIO [OBRIGATORIO]
               cPWD = SENHA DO LOGUIN [OBRIGATORIO]
*/
LOCAL oPop, oPart, oTIpMail, oUrl
LOCAL cFLD:=''
LOCAL mI:=0, nSEQ:=0
LOCAL aParts:={}, aEmails:={}
LOCAL lCLOSE:=.T.

MsgRun("Aguarde, Verificando emails...")

IF cPOP=NIL
   cPOP:=''
ENDIF
IF cUSE=NIL
   cUSE:=''
ENDIF
IF cPWD=NIL
   cPWD:=''
ENDIF

IF VALTYPE(cPWD)='N'
   cPWD:=STR(cPWD)
ENDIF
cPOP:=ALLTRIM(LOWER(cPOP))
cUSE:=ALLTRIM(cUSE)
cPWD:=ALLTRIM(cPWD)

cUSE:= StrTran( cUSE, "@", "&at;" )

try
   oUrl1:= tUrl():New( "pop://" + cUSE + ":" + cPWD + '@'+cPOP )
catch
   fim_run()
   SHOWMSG("Erro ao criar classe POP")
   RETURN(.F.)
end

try
   oUrl1:cUserid := Strtran( cUSE, "&at;", "@" )
   opop:= tIPClientPOP():New( oUrl1, .f. )
catch
   fim_run()
   SHOWMSG( "Erro ao definir as configuração do POP")
   RETURN(.F.)
end

HW_Atualiza_Dialogo2("Aguarde, Conectando no servidor..." )

IF !oPop:open()
   FIM_RUN()
   SHOWMSG( "Erro na conexão com o servidor POP" ) // oPop:lastErrorMessage()
   RETURN(.F.)
ELSE
   HW_Atualiza_Dialogo2("Aguarde, comunicando-se com o servidor POP..." )
   TRY
      aEMails := oPop:retrieveAll(lCLOSE)   //  .t.  deleta os emails recuperados
   catch e
      FIM_RUN()
      SHOWMSG( "Erro na conexão com o servidor POP" ) // oPop:lastErrorMessage()
      RETURN(.F.)
   END

   IF lCLOSE
      oPop:close()
   ENDIF
ENDIF

// começa a gravação em minha tabela que guarda os email
Sr_BeginTransaction() //
FOR mI:=1 TO Len( aEMails )
   HW_Atualiza_Dialogo2("Aguarde, recebedo email " + ALLTRIM(STR(mI))+'/'+ALLTRIM(STR(LEN(aEmails)))  )

   nSEQ:=SEQUENCIA('RECMAIL')

   SELECT CAG_EML
   APPREDE()
   oTIpMail := aEmails[mI]
   FIELD->SEQEML := nSEQ
   FIELD->DATEML := DATE()
   FIELD->FRMEML :=oTIpMail:getFieldPart( "From" )
   FIELD->TITEML :=oTIpMail:getFieldPart( "Subject" )
   FIELD->POPEML :=cPOP
   LIBERAREG()

   IF oTIpMail:isMultiPart()
      aParts := oTIpMail:getMultiParts()
      FOR EACH oPart IN aParts
         IF !Empty( oPart:getFileName() )
            cFLD:=ALLTRIM(LOWER(GETENV('temp')+'\sy_temp'))
            IF FILE(cFLD+'\'+oPart:getFileName())
               FERASE(cFLD+'\'+oPart:getFileName())
            ENDIF
            IF oPart:detachFile( cFLD )
               SELECT CAG_AML
               APPREDE()
               FIELD->SEQAML := nSEQ
               FIELD->NOMAML := oPart:getFileName()
               FIELD->ARQAML := MaskBinData(MemoRead( cFLD+'\'+oPart:getFileName() ))
               LIBERAREG()
            ENDIF
         ELSE
            SELECT CAG_EML
            GO BOTTOM
            TRAVAREG('S')
            FIELD->MSGEML := oPart:getBody()
            LIBERAREG()
         ENDIF
      NEXT
   ELSE
      SELECT CAG_EML
      GO BOTTOM
      TRAVAREG()
      FIELD->MSGEML := oTIpMail:getBody()
      LIBERAREG()
   ENDIF

   HB_GCAll(.T.)
NEXT
MY_COMMITALL()
SR_endtransaction()

FIM_RUN()

RETURN(.T.)
 

Nota: Pode ser que tenha alguma função própria do meu sistema, mas ignore ou se ficar com duvida me pergunte.

Link to comment
Share on other sites

Oi Eric, quanto tempo.

Eu já percebi uma demora em alguns clientes com essa faixa de mil e poucos e-mail por dia e, no começo até travava mesmo, mas depois que passei a usar o HB_GCAll(.T.) ele não travou mais. Mas esse final de ano/2013 vou ter cliente grande que vai fazer férias coletiva e os emails não param de chegar nesse período, baseado nos dias e quantidade de emails recebidos diariamente estamos estimando que vai chegar a 250 mil e-mail( juntado as droga de spam ) ai que vamos descobrir se essa bagaça vai dar conta ou não...

Link to comment
Share on other sites

Leonardo

Obrigado pela dica, o importante é que funcinou.!

Amigo Eric Develope, posta o source que voce está dizendo (mesmo em php) quem sabe o leonardo e o pessoal dele pode aproveitar...

Faça como o leonardo #compartilhe..

Abraços a todos...

Link to comment
Share on other sites

Amigos, chega disso....

Leonardo, obrigado pela resposta. Estou dando o assunto como liquidado, resolvido....

Eric, caso a do leonardo nao seja a melhor opção amigo, poste outra. Para podermos avaliar.

Lembre-se que nem o Leonardo nem voce é o dono da verdade e nenhum tem que provar nada um pro outro.

Todos Sabemos da alta Capacidade de ambos.

Seria mais Proveitoso para o forum postar a sua solução ao pedir provas. Cada um que pegar o Código Irá Avaliar.

Até mais

Obrigado a Todos....

Link to comment
Share on other sites

Acompanho este fórum a muito tempo, mesmo não sabendo muito de fivewin, não entendo este usuário Eric, nunca vi ele contribuindo em nada, talvez não tenha conhecimento suficiente para isto, que é o meu caso, mais entrar nos tópico com toda esta arrogância, com certeza é o tipo de usuário que só suga informações aqui, poderia pelo menos ser mais humilde e não dar palpite nos tópico...fica a dica

Adalberto

Link to comment
Share on other sites

Sem tempo, sei...Não afirme o que não sabe ou o que não pode. Quem contesta precisa evidenciar, pois o erro de interpretação poderia ser meu.

Eric, estou com muito serviço, muito mesmo, se não até fica aqui por aqui...perdendo tempo. Já que você é o sabichão, da uma olhada nos POP que tem na classe do HBBLAT e volta aqui e explica para nós para que serve...

Link to comment
Share on other sites

  • 3 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...