shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Baixar anexo de e-mail


From: Osvaldo Almeida
Subject: Re: [shell-script] Re: Baixar anexo de e-mail
Date: Thu, 23 Sep 2010 10:48:59 -0300

Cristiano,

Obrigado pelas dicas.



Em 22 de setembro de 2010 17:41, Cristiano <address@hidden> escreveu:

>
>
>
>
> --- Em address@hidden <shell-script%40yahoogrupos.com.br>,
> "osvaldo.luiz" <osvaldo.luiz.2005@...> escreveu
>
> >
> > Bom dia Senhores,
> >
> > Preciso da ajuda de voces,
> >
> > Tenho uma conta de e-mail especifica para receber NF-e. Preciso de um
> script que baixe esses XMLs e salve-os em uma determinada pasta, caso esses
> arquivos venham compactados, gostaria que fossem descompactados e depois
> salvos dentro desse diretorio.
> >
> > Alguem tem algo parecido ou poderia orientar-me em como fazer?
> >
> > Obrigado.
> >
>
> Osvaldo, boa tarde.
>
> Dias atrás implementei uma solução idêntica a esta que você procura.
>
> Tenho um script pronto mas não seria nada didático fornecer-lhe, pois lhe
> privaria da oportunidade de pesquisa e aprendizado, nem mesmo justo comigo,
> que ralei alguns dias para chegar à solução.
>
> Mas vou lhe dar o roteiro da solução e repassar algumas dicas que recebi
> aqui menos na lista (dai de graça o que recebeu de graça).
>
> Não sou profundo conhecedor de servidores de e-mail, portanto, posso falar
> algo que não seja regra ou não se aplique a todos. Se fizer isso, releve,
> por favor.
>
> O fato é que o servidor de e-mail, pelo menos o meu (courrier), armazena as
> mensagens recebida em arquivos em plain-text, com os anexos como parte deste
> texto, codificado em algum padrão (base64, xml, etc).
>
> No meu caso, cada usuário tem um diretório no sistema de arquivo que é a
> raiz do e-mail, dentro onde há subdiretórios para as pastas de mensagens
> (novas - new, lidas - cur, enviadas - sent, etc). Sabendo que o
> comportamento padrão do servidor é gravar os arquivos das mensagens que
> chegam dentro do diretório 'new' e transferi-las para a pasta 'cur' após
> serem baixadas (pop3) ou acessadas (imap) pelo client, eu fiz o seguinte:
>
> 1) usei o programa incron (
> http://inotify.aiken.cz/?section=incron&page=about&lang=en) para monitorar
> o filesystem e detectar novos arquivos criados no diretóro
> /home/usuario/maildir/new (o path pode ser diferente no seu caso) e disparar
> um shell script que recebe o nome do arquivo como parâmetro e que tem a
> finalidade de extrair os anexo.
> O incron é uma espécie de crontab que dispara com base em eventos do
> filesystem (arquivos criados, arquivos movidos, arquivos acessados, arquivos
> apagados, arquivos alterados, etc.). Se você usa debian, ele está nos
> repositórios oficiais.
>
> 2) O script, com eu disse, recebe como parâmetro o nome do arquivo que
> acabou de chegar. Basicamente o que ele faz é usar comando munpack (
> http://linux.die.net/man/1/munpack) para extrair e salvar o(s) anexo(s)
> que chegam atachados à mensagem.
>
> 3) O resto, é perfumaria:
> - separar os arquivos XML de outros tipos que eventualmente cheguem (PDF do
> DANFE, ou outros tipo que não deveriam está alí - SPAM)
> - extrair de dentro do XML os dados do como remetente e destinatário
> (possuímos mais de uma empresa e recebemos o XML de ambas no mesmo
> endereço), fazendo a triagem do arquivo.
>
> Há também outra opções. Por exemplo, se não tiver acesso ao servidor, pode
> configurar uma máquina qualquer para puxar as mensagens via pop3 através do
> getmail, repassando-as para o maildrop que se encarrega da entrega local.
> Dentro do maildrop tem um comando chamdado xfilter que repassa, via stdin o
> conteúdo da mensagem a um script, que pode ser um shell, um python, um php,
> um perl, etc. Aí, dá para usar o munpack do mesmo modo para extrair os
> anexos.
>
> Dá uma estudada nestas opções e tenta escrever algum código. Se tiver
> dificuldades, posta denovo para a gente tentar ajudar.
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]