GARANTIR DESCONTO

Fórum TIdMessage e TIdEMailAddressList #287830

12/07/2005

0

Ola, estou tentando desenvolver uma aplicacao que faca o envio de email mas so encontrei o componente TIdMessage, onde posso encontrar o componente TIdEMailAddressList? Qual a versao do Delphi?
Obrigado.


Ricardopinheiro

Ricardopinheiro

Responder

Posts

13/07/2005

Massuda

O objeto que você citou é criado e usado internamente pelo TIdMessage, não precisa ser criado separadamente.

Talvez isso ajude você: este é o esquema básico de envio de email usando os componentes Indy...
...
  // monte sua mensagem usando um TIdMessage
  IdMessage1.Recipients.Add(´alguem@example.com´);
  IdMessage1.Subject := ´Assunto´;
  IdMessage1.Body.Add(´Texto da mensagem´);

  // nome do seu servidor SMTP
  IdSMTP1.Host := ´smtp.example.com´; 

  // alguns servidores SMTP requerem login outros não
  //IdSMTP1.AuthenticationType := atLogin;
  //IdSMTP1.Username := ´nome.de.usuario´
  //IdSMTP1.Password := ´senha.secreta´;

  // conecta com o servidor
  IdSMTP1.Connect; 
  try 
    IdSMTP1.Send(IdMessage1); 
  finally 
    IdSMTP1.Disconnect; 
  end; 
...
Dependendo do servidor de SMTP que você estiver usando, pode haver necessidade de incluir mais código para que o envio de mensagem funcione.


Responder

Gostei + 0

13/07/2005

Ricardopinheiro

Sua ajuda valeu MUITO, mas a linha IdMessage1.Recipients.Add(´alguem@example.com´); nao funcionou. Resolvi usando IdMessage.Recipients.EMailAddresses := ´rrp@rhodes.com.br´;
Faltou ainda como identificar o remetente. Mas agora apareceu um outro problema: o programa funcionou corretamente, mas a mensagem nao foi enviada, ja verifique o anti-spam e o boxtrapper da minha caixa de mensagem e nada :cry: ... ou sera que foi enviada e ta perdida por ai? Alguem achou? :P


Responder

Gostei + 0

13/07/2005

Massuda

...a mensagem nao foi enviada...
Isso pode ter várias causas:[list:cdf57bf060][*:cdf57bf060]Seu servidor de SMTP requer que você faça login? Nesse caso, você precisa do código que está comentado no exemplo que postei.[*:cdf57bf060]Seu servidor de SMTP pode requerer que você conecte primeiro no servidor POP3 e permaneça conectado (no servidor POP3) até terminar de usar o servidor SMTP; o código exemplo ficaria assim...
... 
  // monte sua mensagem usando um TIdMessage 
  ...

  // nome do seu servidor POP3 
  IdPOP31.Host := ´pop.example.com´; 
  IdPOP31.Username := ´nome.de.usuario´ 
  IdPOP31.Password := ´senha.secreta´; 

  IdPOP31.Connect;

  // nome do seu servidor SMTP 
  IdSMTP1.Host := ...
  ...
    IdSMTP1.Disconnect; 
  end; 

  IdPOP31.Disconnect;
[*:cdf57bf060]Pode estar tendo algum problema no Send... tire o try...finally e veja se está gerando alguma exceção.[*:cdf57bf060]Seu email pode estar sendo classificado como spam. Dê uma olhada [url=http://forum.clubedelphi.net/viewtopic.php?t=58176]neste tópico[/url][/list:u:cdf57bf060]


Responder

Gostei + 0

29/07/2005

Guilherme

massuda criei um sistema que esta igual no seu so q quando envio uma mensagen com anexo de +- 1 mb a aplicaçao tipo fica travada mais nao esta travada si deixa ela quetinha ela termina de envia e volta ao normal vc sabe como corrigir isso ??? e tem como colocar progress nessa rotina ?????


valew


Responder

Gostei + 0

29/07/2005

Massuda

...quando envio uma mensagen com anexo de +- 1 mb a aplicaçao tipo fica travada mais nao esta travada si deixa ela quetinha ela termina de envia e volta ao normal...
O método IdSMTP1.Send só retorna depois de enviar a mensagem (no seu caso, +/- 1 mega). Melhora um pouco se você colocar no form onde tem o IdSMTP um TIdAntiFreeze (aba Indy Misc), mas não resolve totalmente.

e tem como colocar progress nessa rotina ?
Sei que tem, mas eu nunca fiz isso, não sei como faz.


Responder

Gostei + 0

04/12/2005

Aspirante

Ressucitando este tópico para uma ajuda.

Coloquei todos os códigos. O programa compilou tranquilo.

As partes mais principais da conexão coloquei assim:

IdPOP31.Host := ´pop.gmail.com´;


...

IdSMTP1.Host := ´smtp.gmail.com´;


Tentei também com pop/smtp.mail.google.com

Na verdade não sei qual é o host do gmail.

Bom. Quando ele vai enviar o e-mail o meu AVG Email Scanner (do AVG AntiVirus) é executado na barra de tarefas, como se mostrando aquela caixinha pop-up do messenger quando chega uma nova mensagem. Ele começa a varrer eu acho o email pop. Aí depois dá uma mensagem no delphi de erro:

EIdProtocolReplyError
´-ERR AVG POP3 Proxy Server: Cannot Connect to the email server!´


Alguém sabe o host do google e o porque do erro?

Também aproveitando, usando o meu GMail no sistema, dá pra enviar email de qualquer computador/cliente?


Responder

Gostei + 0

04/12/2005

Massuda

Esses componentes só funcionam com o GMail se você fizer algumas coisas a mais. Pesquise aqui no fórum por GMail que você deve encontrar alguns tópicos sobre como usar Indy com GMail. Eu nunca precisei fazer isso, por isso não tenho idéia de como fazer isso.


Responder

Gostei + 0

06/12/2005

Aspirante

Mas amigo, olha, antes de responder este tópico eu procurei um monte sobre gmail + indy, gmail, enfim. Nada achei. Tanto procurei que achei este tópico antigo e o ressuscitei.

Bom, não consegui achar nada, mas se alguém puder me ajudar, por favor...

Obrigado.


Responder

Gostei + 0

06/12/2005

Massuda

GMail usa SSL (conexão segura)... o básico seria [url=http://forum.clubedelphi.net/viewtopic.php?t=60778]instalar o suporte a SSL no Indy[/url] mas como escrevi no meu post anterior, não sei dos detalhes para conectar com o GMail; a princípio, basta ter o suporte a SSL e informar as portas usadas pelos servidores do GMail (que não são as portas padrão).


Responder

Gostei + 0

07/12/2005

Aspirante

Uhm, então é melhor que eu faça com o Yahoo né.

Poderia me passar as portas, host, tudo o mais do yahoo?

Obrigado.


Responder

Gostei + 0

07/12/2005

Massuda

Peloque me lembro, as portas são as portas padrão que já vem ajustadas nos componentes. Quanto aos outros detalhes (servidores, username, senha) você obtem isso no link Opções na página do webmail deles (você precisa estar logado no Yahoo).


Responder

Gostei + 0

08/12/2005

Aspirante

Olha fiz esse código aí mudando claro as opções de usuário e senha. Mas quando tento enviar o email, apesar de dá certo, ou seja, nenhuma mesagem de erro, o email não chega a caixa de entrada. Nem em spam, nem em nada.

O que será qeu é??


begin
IdPOP31.Host := ´pop.mail.yahoo.com.br´;
IdPOP31.UserId := ´usuario´;
IdPOP31.Password := ´senha´;

IdPOP31.Connect;

// nome do seu servidor SMTP
IdSMTP1.Host := ´smtp.mail.yahoo.com.br´;
IdSMTP1.Disconnect;


////////////////////////////////////////////////////////////


IdMessage1.Recipients.EMailAddresses := Edit2.Text;
IdMessage1.Subject := Combobox1.Text;
IdMessage1.Body := Memo1.Lines;

// nome do seu servidor SMTP
IdSMTP1.Host := ´smtp.mail.yahoo.com.br´;

// alguns servidores SMTP requerem login outros não
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.UserId := ´usuario;
IdSMTP1.Password := ´senha´;

// conecta com o servidor
IdSMTP1.Connect;
try
IdSMTP1.Send(IdMessage1);
finally
IdSMTP1.Disconnect;
end;
IdPOP31.Disconnect;
end;



Responder

Gostei + 0

08/12/2005

Massuda

Existem vários motivos para um email não chegar no destino.

Primeiro, eu mudaria parte do seu código para...
...
IdSMTP1.Connect; 
try 
  IdSMTP1.Send(IdMessage1); 
except
  on E: Exception do 
    MessageDlg(E.Message, mtError, [mbOK], 0);
end; 
IdSMTP1.Disconnect; 
...
Fora isso, acho que está faltando o remetente da mensagem (alguns servidores classificam isso como spam). Falando em spam, existem vários tópicos aqui no fórum sobre Indy e spam; pesquise aqui o fórum por IdSMTP1 e SPAM que você deve encontrar esses tópicos.


Responder

Gostei + 0

16/07/2008

Luizito

Alguém sabe porque o IdSMTP do Indy 10 sempre retorna 0 (zero) no envio de email para AWorkCountMax ??
Não deveria retoprnar o tamanho o IdMessage ????

IdSMTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Integer);


Um abraço...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar