12/4/2002 23:20:25, Ricardo Stock <[EMAIL PROTECTED]> wrote:
> Eu estou pensando em fazer da seguinte forma, que acho que seria uma otima
>ideia para ser utlizado como historico da lista.
>
> Criar um banco de dados com sistema de busca onde haveriam dois campos.
>
> 1 - titulo do e-mail que seria o campo assunto
>
> 2 - conteudo - que seria o corpo do e-mail.
>
>est� � a ideia que estou tendo e pensando em fazer...
Coincidencia, hj � noite comecei a fazer algo do tipo aqui em Ruby pra tratar as
mensagens de mailboxes do sylpheed,
soh faltou inserir no banco. Eu j� tinha feito um em Java, bem completinho, com
estatisticas, mas leva muito mais
tempo pra executar. Modifica l� no meio para usar o banco de dados que vc quiser.
Dica: use Ruby-DBI. Eh parecida
com a do Perl, e nao precisa brigar com ", ' etc.
#!/usr/bin/ruby -w
require "mysql"
require "parsedate"
$dbhost = "localhost"
$banco = "BancoDeDadosQualquer"
$username = "usuario"
$password = "senha"
$dirmsgs = "/home/usuario/Mail/inbox/"
if(!(FileTest.directory?($dirmsgs))) then
$stderr << "Diretorio inexistente\n";
exit 1;
end
def separa(msg)
h_total = Hash.new
arr_headers = []
arr_corpos = []
assunto, autor, data= ""
h_total['headers'] = arr_headers
h_total['corpos'] = arr_corpos
msg.each { |linhah|
if(linhah.length == 1) then
break
else
arr_headers << linhah
if(linhah[0,8] == "Subject:") then
assunto = linhah[9..linhah.size]
end
if(linhah[0,5] == "Date:") then
data = linhah[6..linhah.size]
end
if(linhah[0,5] == "From:") then
autor = linhah[6..linhah.size]
end
end
}
msg.each { |linhac|
arr_corpos << linhac
}
h_total['headers'] = arr_headers
h_total['corpos'] = arr_corpos
h_total['assunto'] = assunto
h_total['data'] = data
h_total['autor'] = autor
return h_total
end
def insere(hashmsg, cnt, debug)
qmsgid = cnt
qsubject = hashmsg['assunto']
qautor = hashmsg['autor']
qdata = hashmsg['data']
qheader = hashmsg['headers']
qdata = ParseDate.parsedate(qdata).to_s
db = Mysql.new(host=$dbhost, user=$username, passwd=$password, db=$banco)
# aqui fiquei de saco cheio de ficar brigando com aspas, apostrofo etc. JDBC
rules.
# fa�a vc sua rotina de insercao. Use Ruby-DBI
end
i = 0
Dir.entries($dirmsgs).each { |arq|
if(FileTest.directory?(arq) != true) then
farqchk = File.open($dirmsgs + arq, "r")
farqchk.lineno = 0;
if(farqchk.read(2) == "Re") then
i = i + 1
farqchk.rewind
mensagem = separa(farqchk)
insere(mensagem,i,arq)
farqchk.close
else
farqchk.close
end
end
}
-------
thiago
--
Knowledge is power -- knowledge shared is power lost. (Crowley)
Assinantes em 13/04/2002: 2231
Mensagens recebidas desde 07/01/1999: 162344
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista:
mailto:[EMAIL PROTECTED]