Pegar codigo HTML ao receber email pelo POP
Ola a todos tudo bem, espero que sim, pessoal estou com um problema pois estou fazendo uma aplicação para receber email porem nao estou conseguindo pegar o codigo HTML do email, acredito eu que todos os email tem um codigo HTML embutido no servidor, ate porque muitas mensagens vem em formato html ou entao formatadas.
De qualquer forma nao estou conseguindo, estou utilizando os componentes indy.
for x :=0 to pred(IdMessagepop3.MessageParts.Count) do
begin
// Indentifica os tipos de Mime
if(IdMessagepop3.MessageParts.Items[x] is TIdAttachment) then
begin
FileName := TIdAttachment(IdMessagepop3.MessageParts.Items[x]).FileName;
if FileExists(FileName) then
DeleteFile(FileName);
TIdAttachment(IdMessagepop3.MessageParts.Items[x]).SaveToFile(FileName);
ListBox1.Items.Add(´Arquivo´+FileName+´foi salvo´);
end
else
begin
if IdMessagepop3.MessageParts.Items[x] is TIdText then
begin
ListBox1.Items.Add(´Texto: ´+TIdText(IdMessagepop3.MessageParts.Items[x]).Body.Text);
ListBox1.Items.Add(´´);
listbox1.Items.SaveToFile(label3.caption+´\´+FormatDateTime(´ddmmyyyy´,date)+´.pra´);
end;
end;
end;
Nesta parte do programa eu vejo os anexos, mas nao estou conseguindo ver se é pagina html, se alguem conseguir me ajudar eu agrade muito.
Obrigado a todos.
De qualquer forma nao estou conseguindo, estou utilizando os componentes indy.
for x :=0 to pred(IdMessagepop3.MessageParts.Count) do
begin
// Indentifica os tipos de Mime
if(IdMessagepop3.MessageParts.Items[x] is TIdAttachment) then
begin
FileName := TIdAttachment(IdMessagepop3.MessageParts.Items[x]).FileName;
if FileExists(FileName) then
DeleteFile(FileName);
TIdAttachment(IdMessagepop3.MessageParts.Items[x]).SaveToFile(FileName);
ListBox1.Items.Add(´Arquivo´+FileName+´foi salvo´);
end
else
begin
if IdMessagepop3.MessageParts.Items[x] is TIdText then
begin
ListBox1.Items.Add(´Texto: ´+TIdText(IdMessagepop3.MessageParts.Items[x]).Body.Text);
ListBox1.Items.Add(´´);
listbox1.Items.SaveToFile(label3.caption+´\´+FormatDateTime(´ddmmyyyy´,date)+´.pra´);
end;
end;
end;
Nesta parte do programa eu vejo os anexos, mas nao estou conseguindo ver se é pagina html, se alguem conseguir me ajudar eu agrade muito.
Obrigado a todos.
Icheuk
Curtidas 0
Respostas
Massuda
30/08/2005
...acredito eu que todos os email tem um codigo HTML embutido no servidor, ate porque muitas mensagens vem em formato html ou entao formatadas.
Não entendi o que você quis dizer. O servidor não altera o conteúdo da mensagem. ...
Nesta parte do programa eu vejo os anexos, mas nao estou conseguindo ver se é pagina html...
Você não está testando qual o tipo de conteúdo do anexo. Verifique o valor de...... if(IdMessagepop3.MessageParts.Items[x] is TIdAttachment) then begin FileName := TIdAttachment(IdMessagepop3.MessageParts.Items[x]).FileName; if FileExists(FileName) then DeleteFile(FileName); TIdAttachment(IdMessagepop3.MessageParts.Items[x]).SaveToFile(FileName); ListBox1.Items.Add(´Arquivo´+FileName+´foi salvo´); end ...
TIdAttachment(IdMessagepop3.MessageParts.Items[x]).ContentType
...para pelo menos um dos anexos o ContentType deve ser ´ text/html´, o que indica que o conteúdo é HTML.
GOSTEI 0
Icheuk
30/08/2005
Caro Massuda, obrigado por responder, deixa eu tentar me explicar melhor:
Em primeiro lugar, acredito eu todos os email (todos mesmo) deve conter um codigo html, embutido em algum lugar, pois quando mandamos um email formatado (cor, tipo de letra, etc...) no outlook e baixamos em outro programa ou webmail, conseguimos ver normalmente, e html é o padrao na net, certo.
Sendo assim eu consigo baixar os email do provedor pop sem problemas os anexos tambem, porem para padronizar gostaria de saber atraves dos componentes Indy, como vejo ou atraves de qual propriedade vejo o codigo html da menssagem, pois tenho email normais e emails formatados ou ate mesmo com paginas html, quando tempo montar o email no recebimento o que acontece é que vem desformatado e sem sentido nenhum, pois nao tenho o codigo html.
Referente a sua resposta:
TIdAttachment(IdMessagepop3.MessageParts.Items[x]).ContentType
Desta forma eu sabendo que é html/text o que devo fazer, hoje estou mandando o codigo para um webbrowser sem problemas, mas volto a dizer na minha opiniao todos os email tem um codigo html embutido(pelo que pesquisei na net).
Por exemplo pelo proprio outlook, quando mandamos um email tem ate forma para ver o codigo eles apenas nao liberam da mensagem recebida.
Obrigado.
Em primeiro lugar, acredito eu todos os email (todos mesmo) deve conter um codigo html, embutido em algum lugar, pois quando mandamos um email formatado (cor, tipo de letra, etc...) no outlook e baixamos em outro programa ou webmail, conseguimos ver normalmente, e html é o padrao na net, certo.
Sendo assim eu consigo baixar os email do provedor pop sem problemas os anexos tambem, porem para padronizar gostaria de saber atraves dos componentes Indy, como vejo ou atraves de qual propriedade vejo o codigo html da menssagem, pois tenho email normais e emails formatados ou ate mesmo com paginas html, quando tempo montar o email no recebimento o que acontece é que vem desformatado e sem sentido nenhum, pois nao tenho o codigo html.
Referente a sua resposta:
TIdAttachment(IdMessagepop3.MessageParts.Items[x]).ContentType
Desta forma eu sabendo que é html/text o que devo fazer, hoje estou mandando o codigo para um webbrowser sem problemas, mas volto a dizer na minha opiniao todos os email tem um codigo html embutido(pelo que pesquisei na net).
Por exemplo pelo proprio outlook, quando mandamos um email tem ate forma para ver o codigo eles apenas nao liberam da mensagem recebida.
Obrigado.
GOSTEI 0
Nildo
30/08/2005
Ok Ivan, vamos lá.
Nem todo e-mail é composto por HTML. O Outlook e esses programas habilitam o HTML caso você use recursos de formatação. Eles habilitam HTML, incluindo a seguinte informação no cabeçalho e-mail:
Então, para verificar se o e-mail recebido é HTML, você tem que fazer um parsing. Verificar a existência dessa informação citada acima, e jogar em um arquivo *.HTML o conteúdo que estiver entre [b:a30edfd645]<HTML>[/b:a30edfd645] e [b:a30edfd645]</HTML>[/b:a30edfd645].
Os anexos chegam encriptados com codificação MIME, você precisa de um componente MIME para poder desencriptar os anexos e salvar de forma binária. Creio que isso possa ajudar, caso contrário estarei lendo este tópico constantemente para dar + respostas.
Um abraço Ivan! Agradeço por tudo!
Nem todo e-mail é composto por HTML. O Outlook e esses programas habilitam o HTML caso você use recursos de formatação. Eles habilitam HTML, incluindo a seguinte informação no cabeçalho e-mail:
Content-Type: text/html;
Então, para verificar se o e-mail recebido é HTML, você tem que fazer um parsing. Verificar a existência dessa informação citada acima, e jogar em um arquivo *.HTML o conteúdo que estiver entre [b:a30edfd645]<HTML>[/b:a30edfd645] e [b:a30edfd645]</HTML>[/b:a30edfd645].
Os anexos chegam encriptados com codificação MIME, você precisa de um componente MIME para poder desencriptar os anexos e salvar de forma binária. Creio que isso possa ajudar, caso contrário estarei lendo este tópico constantemente para dar + respostas.
Um abraço Ivan! Agradeço por tudo!
GOSTEI 0
Massuda
30/08/2005
...acredito eu todos os email (todos mesmo) deve conter um codigo html, embutido em algum lugar, pois quando mandamos um email formatado (cor, tipo de letra, etc...) no outlook e baixamos em outro programa ou webmail, conseguimos ver normalmente...
Não, você está misturando uma mensagem com o modo com que um programa exibe uma mensagem.A mensagem conterá texto formatado em HTML somente se for gerada dessa forma. No caso do Outlook/Outlook Express, o default é gerar mensagem formatas em HTML, mas você pode mudar nesses programas tanto o formato de envio (no caso do OE, menu Ferramentas|Opções|Envio|Formato para envio de mensagens) como o de recebimento (no caso do OE, menu Ferramentas|Opções|Ler|Leitura de mensagens|Ler todas as mensagens em texto sem formatação).
Todo programa moderno de email é capaz de exibir mensagens formatadas em HTML se a mensagem contiver os indicadores necessários (no caso, content-type=text/html); sem o indicador, a mensagem seria exibida como texto e você veria as tags HTML.
No caso do webmail, o software do webmail (que não tem relação alguma com o servidor de email) faz a mesma coisa que o programa de email, com a diferença que toda a interface do software é feita em HTML (obviamente todas as mensagens serão exibidas em páginas formatadas usando HTML, mas isso não significa que a mensagem em si esteja em HTML).
GOSTEI 0
Icheuk
30/08/2005
Poxa massuda, vc tem razao, da forma como explicou ficou bem claro a forma das mensagens, vou fazer mais alguns testes e depois volta a entrar em contato e asim que conseguir resultado positivo volta a postar para quem tiver curiosidade ou necessidade.
Obrigado.
Ps, se tiver alguma dica ou forum, apostila ou qualquer coisa sobre indy e puder passar obrigado.
Obrigado.
Ps, se tiver alguma dica ou forum, apostila ou qualquer coisa sobre indy e puder passar obrigado.
GOSTEI 0