Mudar Fonte em Email (Indy)

Delphi

18/10/2006

Olá amigos,

Gostaria de saber como posso mudar a fonte utilizada no corpo do email enviado pelo par de componentes IdMessage e IdSMTP.

Obrigado.


Ramms

Ramms

Curtidas 0

Respostas

Massuda

Massuda

18/10/2006

Se a sua mensagem está formatada em HTML, use o recurso apropriado do HTML para ajuste do fonte.

Se sua mensagem é texto simples, não tem como ajustar o fonte; quem controla isso é o programa usado por quem recebe o email.


GOSTEI 0
Ramms

Ramms

18/10/2006

Massuda, enquanto não obtive resposta continuei pesquisando, estou tentando em HTML, mas não obtenho exito, vou postar o código:


procedure Tfrmexportadados.BitBtn4Click(Sender: TObject);
var
  assunto:string;
  filename:string;
  mensagem:string;
  lTextPart: TIdText;
begin
filename := ´Remessa_´ + FormatDateTime(´ddMMyyyyhhmm´, Now);
  IdMessage.Sender.Name := ´Serviço de Envio de Arquivos de Remessa´;
  IdMessage.Recipients.EMailAddresses := ´xxx@xxxx.xxx.xx´;
  assunto := ´Arquivo de Remessa: ´ + FormatDateTime(´dd/MM/yyyy - hh:mm´, Now);
  IdMessage.Subject := assunto;
  IdMessage.Body.Clear;
mensagem := ´<html><body><font face=verdana>Arquivo Enviado em ´ + FormatDateTime(´dd/MM/yyyy - hh:mm´, Now) + #13 +
´Por: ´ + frmprincipal.edit1.text + 13 +
´Nome do Arquivo: ´ + filename + ´</font></body></html>´;
  lTextPart := TIdText.Create(idmessage.MessageParts);
  lTextPart.Body.Text := mensagem;
  lTextPart.ContentType := ´text/html´;

  TIdAttachment.create(idmessage.MessageParts, TFileName(filename+´.xls´));
  IdSMTP.Connect;
  IdSMTP.Send(IdMessage);
  IdSMTP.Disconnect;
  Application.MessageBox(´Email enviado com sucesso!´, ´Confirmação´, MB_ICONINFORMATION + MB_OK);



Ele envia o email, mas não aparece nada no corpo da mensagem, se eu enviar IdMessage.Body.Text := ´ehuiaheuia´; ele vai mas não aceita tags, ele imprime as tags...

Obrigado


GOSTEI 0
Massuda

Massuda

18/10/2006

Dê uma olhada no artigo [url=http://www.dragonsoftru.com/?html=indy-email.html]EMAIL MESSAGES FROM DELPHI. USING INDY TO SEND E-MAILS[/url] (de Serge Dosyukov da Dragon Software, em inglês). O artigo explica como gerar diversos tipos de mensagens (texto simples, texto simples com anexos, HTML e HTML com anexos); a parte 3.3 explica como gerar uma mensagem formatada em HTML. Mesmo que você não leia inglês, o código exemplo deve te ajudar.


GOSTEI 0
Ramms

Ramms

18/10/2006

Massuda eu montei meu bloco de comandos em cima desse artigo, mas não consigo entender pq simplesmente não envia nada no corpo da mensagem =/

Eu li e re-li akilo e não achei o problema


GOSTEI 0
Massuda

Massuda

18/10/2006

Qual erro está ocorrendo?


GOSTEI 0
Ramms

Ramms

18/10/2006

Não ocorre erro, ele simplesmente ignora isso

mensagem := ´<html><body><font face=verdana>Arquivo Enviado em ´ + FormatDateTime(´dd/MM/yyyy - hh:mm´, Now) + #13 +
´Por: ´ + frmprincipal.edit1.text + 13 +
´Nome do Arquivo: ´ + filename + ´</font></body></html>´;
  lTextPart := TIdText.Create(idmessage.MessageParts);
  lTextPart.Body.Text := mensagem;
  lTextPart.ContentType := ´text/html´;


É como se isso não existisse, ele não envia nada na mensagem ela vai com meu anexo vai tudo certinho mas sem o corpo da mensagem.

se eu fizer assim ele envia

IdMessage.Body.Text := mensagem;


Mas ele printa as tags html tbm =/


GOSTEI 0
Massuda

Massuda

18/10/2006

Mostre seu código.


GOSTEI 0
Ramms

Ramms

18/10/2006

ele está ali em cima massuda, no terceiro post....


mas vou postar de novo



procedure Tfrmexportadados.BitBtn4Click(Sender: TObject);
var
  assunto:string;
  filename:string;
  mensagem:string;
  lTextPart: TIdText;
begin
filename := ´Remessa_´ + FormatDateTime(´ddMMyyyyhhmm´, Now);
  IdMessage.Sender.Name := ´Serviço de Envio de Arquivos de Remessa´;
  IdMessage.Recipients.EMailAddresses := ´xxx@xxxx.xxx.xx´;
  assunto := ´Arquivo de Remessa: ´ + FormatDateTime(´dd/MM/yyyy - hh:mm´, Now);
  IdMessage.Subject := assunto;
  IdMessage.Body.Clear;
mensagem := ´<html><body><font face=verdana>Arquivo Enviado em ´ + FormatDateTime(´dd/MM/yyyy - hh:mm´, Now) + #13 +
´Por: ´ + frmprincipal.edit1.text + 13 +
´Nome do Arquivo: ´ + filename + ´</font></body></html>´;
  lTextPart := TIdText.Create(idmessage.MessageParts);
  lTextPart.Body.Text := mensagem;
  lTextPart.ContentType := ´text/html´;

  TIdAttachment.create(idmessage.MessageParts, TFileName(filename+´.xls´));
  IdSMTP.Connect;
  IdSMTP.Send(IdMessage);
  IdSMTP.Disconnect;
  Application.MessageBox(´Email enviado com sucesso!´, ´Confirmação´, MB_ICONINFORMATION + MB_OK); 



GOSTEI 0
Massuda

Massuda

18/10/2006

Desculpe por pedir para mostrar o código, pensei que seu código já estivesse diferente do que você já tinha postado.

Aparentemente o código está OK.

O que chega no destino? Tem certeza que o email não está sendo classificado como spam?


GOSTEI 0
Ramms

Ramms

18/10/2006

ele chega com o assunto, remetente e anexo certinho, só que na mensagem vem em branco... sem texto nenhum...


GOSTEI 0
Massuda

Massuda

18/10/2006

Só agora que percebi que você está mandando um arquivo anexo na mensagem.

Pode parecer estranho, mas inclua no seu código...
...
  IdMessage.Body.Clear; 

  lTextPart := TIdText.Create(idmessage.MessageParts); 
  lTextPart.Body.Text := ´´; 
  lTextPart.ContentType := ´text/plain´; 

  mensagem := ...
...
Existe um bug no Indy que causa a perda da parte da mensagem em HTML se não existir uma parte em texto e houver anexos.


GOSTEI 0
Ramms

Ramms

18/10/2006

Finalmente funcionou, obrigado Massuda.

Na versão 10 esse bug foi corrigido?


GOSTEI 0
Massuda

Massuda

18/10/2006

Na versão 10 esse bug foi corrigido?
Não uso a versão 10.


GOSTEI 0
POSTAR