Enviar e-mail com formatação HTML e Anexo
21/11/2005
0
Estive procurando nos últimos dias como fazer para enviar um e-mail com comandos HTML e arquivos anexado, o que eu encontrei eu testei, mas não funcionou.
Qdo eu envio o e-mail com os comandos HTML ele vai como texto e não com a formatação HTML como deveria, qdo não anexo nada ele fica com a formatação HTML. Pelo que eu pesquisei é algo a ver com o ContentType ou Charset.
Estou usando os componentes Indy no Delphi 5.
Desde já agradeço,
Tenham um bom dia.
Robert
_____________________________________________________________
´Somos do tamaho dos nossos sonhos.´
Fernando Pessoa
Rgaffo
Posts
21/11/2005
Massuda
21/11/2005
Rgaffo
Eu já fui nesse site tb, vc até tinha indicado para outra pessoa que postou aki, acontece que a questão não é enviar figuras anexadas e sim outros arquivos, aí que está o problema, eu li quase tudo e não me ajudou muito. Pesquisei bastante antes de postar a duvida aki é que eu não encontrei nada msm para esse problema.
Desde já agradeço.
Sem mais.
22/11/2005
Rgaffo
Obrigado pela indicação do artigo, olhei melhor e então entendi, mas qdo eu implementei o código deu o seguinte erro:
valid RCPT command must precede DATA.
Sabe o que isso pode ser.
Desde já agradeço e desculpe alguma coisa.
Sem mais,
Robert.
22/11/2005
Massuda
22/11/2005
Massuda
22/11/2005
Rgaffo
Esse erro acontece qdo falta informações para o envio de e-mail, por exemplo o destinatário, não descobri qual era a informação que faltava, pesquisei sobre RCPT no google, então resolvi digitar novamente, primeiramente com dados fixos e depois com as váriaveis dai funcionou, mas o problema do anexo ainda não resolvi.
Sem mais,
Obrigado.
Robert
22/11/2005
Rgaffo
procedure TfrmENVP01A.EnviarEmail(Para, Assunto, MensagemEMail: String); var sAssunto, sMensagem: String; TextPart: TIdText; Anexo: TIdAttachment; begin ... // Validação de variaveis. // Existe uma procedure que é chamada antes para conectar // ao servidor POP e SMTP if not (POP3.Connected) or not (SMTP.Connected) or (SMTP.Username = ´´) then Exit; with Mensagem do Begin with From do Begin Name := ´Robert´; Address := SMTP.UserName; End; //with From do Subject := Assunto; Recipients.EMailAddresses := Para; ReceiptRecipient.Text := SMTP.UserName; // Auto Resposta Body.Text := MensagemEMail; End; // with Mensagem do {TextPart := TIdText.Create(Mensagem.MessageParts); TextPart.Body.Text := MensagemEMail; TextPart.ContentType := ´text/hmtl´;} TIdAttachment.Create(Mensagem.MessageParts, ´arquivo,cfg´); {Anexo.ContentType := ´text/plain´; Anexo.Headers.Add(´Content-ID: <ciscfg.cfg>´);} Try Screen.Cursor := crHourGlass; SMTP.Send(Mensagem); ResultEnvio := ´E-Mail enviado´; SMTP.Disconnect; POP3.Disconnect; Except On E: Exception do Begin SMTP.Disconnect; POP3.Disconnect; ResultEnvio := ´Erro ao enviar o E-Mail:´ + E.Message + #1310 + ´ Classe:´ + E.ClassName; Exit End; End; // Try end;
22/11/2005
Rgaffo
Sem mais,
Obrigado.
Robert
22/11/2005
Massuda
Como você está conectando com o servidor? Seu servidor SMTP requer autenticação?
22/11/2005
Rgaffo
O código para conexão com o servidor é:
procedure TfrmENVP01A.ConectaPOPSMTP; begin POP3.Disconnect; SMTP.Disconnect; SQLChange(qryExec, ´select * from SERVEREMAIL where TipoServ = 1´); Screen.Cursor := crHourGlass; if (qryExec.RecordCount > 0) then Try // Conectar ao servidor POP with POP3 do Begin Username := Descriptografar(qryExec.FieldByName(´User´).AsString); Password := Descriptografar(qryExec.FieldByName(´Pass´).AsString); Host := LowerCase(qryExec.FieldByName(´Host´).AsString); Connect; End; // with POP3 do Except On E: Exception do Begin POP3.Disconnect; MsgInfo(´Erro ao conectar com o servidor POP: ´ + E.Message + ´ / Classe: ´ + E.ClassName); Exit End; End; // Try do Conectar ao servidor POP SQLChange(qryExec, ´select * from SERVEREMAIL where TipoServ = 0´); Screen.Cursor := crHourGlass; if (qryExec.RecordCount > 0) then Try // Conectar ao servidor SMTP with SMTP do Begin Username := Descriptografar(qryExec.FieldByName(´User´).AsString); Password := Descriptografar(qryExec.FieldByName(´Pass´).AsString); Host := LowerCase(qryExec.FieldByName(´Host´).AsString); Connect; End; // with SMTP do Except On E: Exception do Begin POP3.Disconnect; SMTP.Disconnect; MsgInfo(´Erro ao conectar com o servidor SMTP: ´ + E.Message + ´ / Classe: ´ + E.ClassName); Exit End; End; // Try do Conectar ao servidor SMTP end;
TipoServ = 0 -> Servidor SMTP
TipoServ = 1 -> Servidor POP
23/11/2005
Massuda
23/11/2005
Rgaffo
Essa tabela possui um só registro, nunca tera mais.
Pelo dominio eu sei que o POP está relacionado so SMTP
Clique aqui para fazer login e interagir na Comunidade :)