Ir para conteúdo
Fórum Script Brasil
  • 0

Email com Indy


Eder

Pergunta

Ola...tou tentando adaptar um codigo que achei na net para mandar email pelo delphi com uma figura(logomarca da empresa) no cabeçalho do email...

funciona legal...porem o codigo sempre anexa a mesma figura ao email...e eu não gostaria de anexar esta logo da empresa, apenas que ela ficasse no inicio do email e dai para baixo somente o texto..

o codigo que achei foi este:

procedure TForm1.Button2Click(Sender: TObject);
Var newText   : TIdText;
    sPath     : String;
    newAttach : TIdAttachment;
    imgID1, imgName1 : String;
begin

   // Endereço e ID da Imagem
   imgName1 := 'c:\figura.jpg';
   imgID1   := CreateUniqueID;

   // Configura o Servidor
  IdSMTP1.Host := EditSmtp.text;//Host SMTP do bol
  IdSMTP1.Port := StrToInt(EditPorta.text);  //Port do bol
  IdSMTP1.Username := EditUserName.text;//Login do usuário
  IdSMTP1.Password := EditPassWord.Text; //Senha do usuário
  IdSMTP1.AuthenticationType := atLogin; //tipo da autenticação

   // Configura o Remetente da Mensagem
   IdMessage1.Clear;
   IdMessage1.Subject      := 'Teste de Envio de Mensagem';
   IdMessage1.From.Address := 'xxx@yyy.com.br';
   IdMessage1.From.Name    := 'Eder Dias';
   IdMessage1.Subject      := 'My Subject';

   //configura os destinatários
   IdMessage1.Recipients.Clear;

   IdMessage1.Recipients.Add;
   IdMessage1.Recipients.Items[IdMessage1.Recipients.Count-1].Address := 'xxx@xxx.com.br';
   IdMessage1.Recipients.Items[IdMessage1.Recipients.Count-1].Name    := 'Eder Dias';


   // Adiciona o HTML ao corpo da mensagem
   newText := TIdText.Create(IdMessage1.MessageParts,nil);
   newText.ContentType := 'text/html';
   newText.Body.Add('<HTML><BODY>');
   newText.Body.Add('<H2>Teste de Envio de Email CORPO DO EMAIL</H2>');
   newText.Body.Add('<IMG SRC="cid:'+imgID1+'">');  // Troca imagens pelo ID unico
   newText.Body.Add('<p><hr></p><br>'+Memomensagem.Text);
   newText.Body.Add('</BODY><HTML>');

   // Adiciona uma parte texto ao corpo
   newText := TIdText.Create(IdMessage1.MessageParts,nil);
   newText.ContentType := 'text/plain';
   newText.Body.Add('Este email só será visualizado em padrão HTML');


   //Anexa a primeira imagem
   newAttach := TIdAttachment.Create(IdMessage1.MessageParts,imgName1);
   newAttach.ContentType        := 'image/jpeg';
   newAttach.ContentDisposition := 'inline';
   newAttach.ExtraHeaders.Values['Content-ID'] := '<'+imgId1+'>';

    //Estabelece a conexão
     IdSMTP1.Connect;
     IdSMTP1.Authenticate;
   // Envia
   Try
      IdSMTP1.Send(IdMessage1);
      showmessage('Ok. Mesagem Enviada com Sucesso.');
      //Envia a mensagem
  except
      showmessage('ERRO. Não enviado.');
     //Mensagem de erro
  end;
  IdSMTP1.Disconnect;
end;
end.

Grato

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Ola...tou tentando adaptar um codigo que achei na net para mandar email pelo delphi com uma figura(logomarca da empresa) no cabeçalho do email...

funciona legal...porem o codigo sempre anexa a mesma figura ao email...e eu não gostaria de anexar esta logo da empresa, apenas que ela ficasse no inicio do email e dai para baixo somente o texto..

Oi Eder....

A sugestão é colocar esta logo da empresa em um arquivo .doc e envia-lo. Se eu encontrar alguma coisa, posto para voce. ... mas vai ser dificil.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Ola...estou voltando a este tópico, porque alem de não conseguir nada até hoje a respeito de anexar a imagem no email.

agora o codigo quando compilo da este erro nesta linha:

imgID1   := CreateUniqueID;
[Error] Unit1.pas(44): Undeclared identifier: 'CreateUniqueID' alguém sabe o porque do erro? quanto a anexar a imagem acontece o seguinte: o codigo funciona perfeito exceto pelo seguinte: ele anexa a imagem como anexo mesmo....eu não queria anexar a imagem como anexo e sim que ela apareça como logo no inicio do email...isto ele ta fazendo certinho...só que sempre anexa a imagem como anexo...e eu não queria....pois fica feio aparecer a logo no inicio...e ao final como ela aparece no anexo...aparece de novo no final do email. fiz assim:
//Adiciona o HTML ao corpo da mensagem
   newText := TIdText.Create(IdMessage1.MessageParts,nil);
   newText.ContentType := 'text/html';
   newText.Body.Add('<HTML><BODY>');
   newText.Body.Add('<IMG SRC="cid:'+imgID1+'">');  // Troca imagens pelo ID unico
   newText.Body.Add('<H2>Teste de Envio de Email CORPO DO EMAIL</H2>');
   newText.Body.Add('<p><hr></p><br>'+Memo1.Text);
   newText.Body.Add('</BODY><HTML>');

tentei mexer nesta parte mas não deu certo também:

//Anexa a primeira imagem

newAttach := TIdAttachment.Create(IdMessage1.MessageParts, imgname1);

newAttach.ContentType := 'image/jpeg';

newAttach.ContentDisposition := 'inline';

newAttach.ExtraHeaders.Values['Content-ID]:= '<'+imgId1+'>';

Grato

Link para o comentário
Compartilhar em outros sites

  • 0

Eder, sobre a imagem de fundo do e-mail, veja se este artigo lhe ajuda: Como criar emails em formato HTML usando Indy 9? (por Massuda)

E tem também este tópico: Html com imagens dentro corpo do e-mail (ref. forum DevMedia)

Quanto ao erro, por acaso você teria trocado a versão do Indy deste o primeiro uso? O erro diz que a função não é conhecida. Pode ter sido removida ou estar em outra unit.

Mas, aa pior das hipoteses, você pode criar ela na sua unit:

Function CreateUniqueID(HexMode:Boolean=True):String;
Var A : Int64;
Begin
  a := Trunc(Now*100000000);
  If HexMode Then Result := IntToHex(a,14) Else Result := IntToStr(a);
  Sleep(50);
End;

conforme a versão do seu Delphi, talvez você não possa usar o cabeçalho com a inicialização do parâmetro, então, retire a igualdade e na chamada à função passe o parâmetro (neste caso True).

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Carinha....testei mas não deu certo...

E tem também este tópico: Html com imagens dentro corpo do e-mail (ref. forum DevMedia)
R.: este é o codigo que já uso.

Eder, sobre a imagem de fundo do e-mail, veja se este artigo lhe ajuda: Como criar emails em formato HTML usando Indy 9? (por Massuda)

R: este não compreendi...e me perdi... :blush:

Quanto ao erro, por acaso você teria trocado a versão do Indy deste o primeiro uso? O erro diz que a função não é conhecida. Pode ter sido removida ou estar em outra unit.
Mas, aa pior das hipoteses, você pode criar ela na sua unit:

CODE
Function CreateUniqueID(HexMode:Boolean=True):String;
Var A : Int64;
Begin
  a := Trunc(Now*100000000);
  If HexMode Then Result := IntToHex(a,14) Else Result := IntToStr(a);
  Sleep(50);
End;
conforme a versão do seu Delphi, talvez você não possa usar o cabeçalho com a inicialização do parâmetro, então, retire a igualdade e na chamada à função passe o parâmetro (neste caso True).

R. quanto ao erro que dava eu retirei a linha....e compilei sem problemas...e tudo funcionou.

Ola...andei dando uma pesquisada na net e não achei nenhuma solução que não anexe a imagem como anexo....parece que quando eu insiro ela como o papel carta(logo) o codigo já põe como anexo também..

Bom acho que vou deixar por enquanto assim, e ficar dando uns bicos na net, derepente acho algo..

Mesmo assim..valeu..

Abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...