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

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

Re: Baixar anexo de e-mail


From: Cristiano
Subject: Re: Baixar anexo de e-mail
Date: Wed, 22 Sep 2010 20:41:04 -0000
User-agent: eGroups-EW/0.82


--- Em address@hidden, "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.



reply via email to

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