Fórum Mala Direta com INDY #346714
26/09/2007
0
Chegou uma nova solicitação de um cliente, agora, pedindo que no projeto seje acrescentado uma opção de Selecionar um modelo HTML, e este, mandar para vários e-mails ao mesmo tempo...
Vi na revista ClubeDelphi, um artigo que fala sobre Mala Direta Delphi com Outlook, mas a minha aplicação foi feita em INDY.
Como que eu poderia fazer isto? Ou melhor... em Indy, é possível?
Desde já agradeço. Obrigado!
Lucas_spohr
Curtir tópico
+ 0Posts
26/09/2007
Paulo Samurai
Basicamente voce vai criar uma tabela para salvar os modelos em html (synedit para o código html e um botão preview no browser ;)). As imagens idealmente serão todas linkadas, nada de anexos.
A seguir, voce desenvolverá uma aplicação que irá gerar uma lista de emails a enviar... até aqui não tem nada relacionado ao envio propriamente dito.
No final, basta voce iterar essa lista e enviar um a um os emails através dos componentes da indy. O código para envio pode ser pesquisado aqui mesmo no forum ou em diversas paginas na internet que falam sobre o componente idStmp.
Espero ter ajudado ;)
[]´s
Gostei + 0
26/09/2007
Lucas_spohr
Primeiramente, agradeço a idéia... É uma boa mesmo!
basicamente, eu pensei no seguinte... Este é o meu código:
----------------------------------------------------
// Adiciona o TEXTO ao corpo da mensagem
newText := TIdText.Create(IdMessage.MessageParts);
newText.ContentType := ´text/html´;
newText.Body.Add(´<HTML>´);
newText.Body.Add(´<BODY>´);
if OpenPictureDialog1.FileName <> ´´ then
newText.Body.Add(´´)
// Se não quizer anexar imagem, mas anexar um HTML
// Para envio de Mala Direta, então...
else
newText.Body.LoadFromFile(OpenDialog2.FileName);
for i := 0 to RichEdit1.Lines.Count-1 do
begin
newText.Body.Add(RichEdit1.Lines.Strings[i]+´
´);
end;
newText.Body.Add(´´);
newText.Body.Add(´</BODY>´);
newText.Body.Add(´</HTML>´);
----------------------------------------------------
Daí, o cliente vai clicar no ´Selecionar Modelo´, escolherá o HTML para a Mala Direta, e pronto... Ao enviar, aparecerá o modelo HTML no corpo da mensagem! Isso eu consegui fazer, só que na visualização, a imagem não aparece!
Tem idéia do que pode ser?
Grato.
Gostei + 0
26/09/2007
Lucas_spohr
é este:
----------------------------------------------------
// Adiciona o TEXTO ao corpo da mensagem
newText := TIdText.Create(IdMessage.MessageParts);
newText.ContentType := ´text/html´;
newText.Body.Add(´<HTML>´);
newText.Body.Add(´<BODY>´);
if OpenPictureDialog1.FileName <> ´´ then
newText.Body.Add(´<IMG SRC=´cid:´+ ExtractFileName(OpenPictureDialog1.FileName) +´´>´)
// Se não quizer anexar imagem, mas anexar um HTML
// Para envio de Mala Direta, então...
else
newText.Body.LoadFromFile(OpenDialog2.FileName);
for i := 0 to RichEdit1.Lines.Count-1 do
begin
newText.Body.Add(RichEdit1.Lines.Strings[i]+´<BR>´);
end;
newText.Body.Add(´</P>´);
newText.Body.Add(´</BODY>´);
newText.Body.Add(´</HTML>´);
----------------------------------------------------
Daí, o cliente vai clicar no ´Selecionar Modelo´, escolherá o HTML para a Mala Direta, e pronto... Ao enviar, aparecerá o modelo HTML no corpo da mensagem! Isso eu consegui fazer, só que na visualização, a imagem não aparece!
Tem idéia do que pode ser?
Grato.
Gostei + 0
26/09/2007
Lucas_spohr
Gostei + 0
26/09/2007
Paulo Samurai
A imagem com ´cid:´ é um anexo que tem de ser enviado junto... para efeito de mala direta eu particularmente preferiria usar um link http mesmo :) (até para não judiar do cliente que vai receber o spam e da propria maquina que vai enviar :D, imagine 10000 mensagens de mala direta com 120K de imagem em anexo o tempo que não vai levar pra sair esse spam da máquina)
Alem disso, para ´preview no browser´ o html a ser enviado não pode usar o ´protocolo cid´, e sim um protocolo ´file´...
Gostei + 0
26/09/2007
Lucas_spohr
mas vc tem idéia de alguma outra maneira de que eu poderia fazer essa Mala Direta?
É claro, usando indy, mas sem ser arquivo html... poderia ser um *.doc, etc, etc...
Obrigado!
Gostei + 0
26/09/2007
Paulo Samurai
[]´s
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)