Fórum Ler/Receber e-mail com indy #385697
05/09/2010
0
ShowStatus('Connecting....');
if POP.Connected then
begin
POP.Disconnect;
end;
POP.Host := Pop3ServerName;
POP.Port := Pop3ServerPort;
POP.Username := Pop3ServerUser;
POP.Password := Pop3ServerPassword;
POP.Connect;
ToggleStatus(True);
FMsgCount := POP.CheckMessages;
FMailBoxSize := POP.RetrieveMailBoxSize div 1024;
ShowFileStatus;
if FMsgCount > 0 then
begin
ShowFileStatus;
RetrievePOPHeaders(FMsgCount);
end
else
begin
ShowStatus('No messages on server');
end;
Showbusy(false) erro: Connection Closed Gracefully.
Com isso não consigo receber meus e-mail por este demo da indy. Agradeço a todos que puderem ajudar.
Welder
Curtir tópico
+ 1Posts
06/09/2010
Leonardo Bertolini
na aba Encaminhamento e POP/IMAP
e olha se as opções Baixar pelo POP e Acesso IMAP estão ativadas..
flw
Gostei + 0
06/09/2010
Leonardo Bertolini
https://www.devmedia.com.br/post-17880-Enviando-e-mail-utilizando-o-SMTP-do-GMAIL--Delphi-2010-Rad-Studio-Indy-10.html
Gostei + 0
06/09/2010
Welder
Gostei + 0
07/09/2010
Leonardo Bertolini
só tem um problema.... a propriedade lMsg.Body.Text do TIdMessage não está com o corpo da mensagem.
Segue o codigo:
Var
lMsg: TIdMessage;
i: Integer;
iMsgs: Integer;
begin
//Configurações
//TIdPOP3
with POP3 do begin
IOHandler := IO_OpenSSL;
AutoLogin := True;
Host := 'pop.gmail.com';
Username := 'sempredelphi@gmail.com';
UseTLS := utUseImplicitTLS;
Password := 'senha';
Port := 995;
end;
//TIdSSLIOHandlerSocketOpenSSL
with IO_OpenSSL do begin
Destination := 'pop.gmail.com:995';
Host := 'pop.gmail.com';
Port := 995;
SSLOptions.Method := sslvSSLv23;
SSLOptions.Mode := sslmClient;
end;
//Conectando
if not POP3.Connected then
POP3.Connect;
//testa a conexão
if not POP3.Connected then
Begin
ShowMessage('Conexão não realizada!');
Exit;
End;
//Pega a qtd de msg que há na caixa de entrada
iMsgs := POP3.CheckMessages;
//Cria DataSet para armazenar os e-mails
cdsMails.FieldDefs.Add('from',ftString,100);
cdsMails.FieldDefs.Add('subject',ftString,100);
cdsMails.FieldDefs.Add('body',ftMemo);
cdsMails.CreateDataSet;
lMsg := TIdMessage.Create;
//Recebe a mensagem
//todo - Aqui tenho que descobrir como pegar varias mensagens de uma só vez,
//ou fazer um loop para pegar uma a uma.
POP3.Retrieve(1, lMsg);
//Preenchendo o DataSet
for i := 1 to iMsgs do begin
cdsMails.Insert;
cdsMails.FieldByName('from').AsString := lMsg.From.Name;
cdsMails.FieldByName('subject').AsString := lMsg.Subject;
cdsMails.FieldByName('body').AsString := lMsg.Body.Text;
cdsMails.Post;
end;
lMsg.Free;
end;
Gostei + 0
07/09/2010
Leonardo Bertolini
To usando o Delphi 2010 .... Indy 10 e as dll's de SSL. http://indy.fulgan.com/SSL/
flw
Gostei + 0
09/09/2010
Welder
begin
POP3.Retrieve(i,lMsg);
TSTringList.Add(lMsg.From.Name);
TSTringList.Add(lMsg.Subject);
TSTringList.Add(lMsg.Body.Text);
end; Agora pra ficar melhor tenho que baixar somente as mensagems não lidas e já marcar como lidas ou excluir. Tem alguma Sugestão?
Gostei + 0
09/09/2010
Leonardo Bertolini
A propriedade lMsg.Body.Text no meu código não está pegando o conteudo do e-mail (esta vindo vazio).... no seu deu certinho ???
Quanto a pegar somente as não lidas... nao fiz maiores testes...tenho que dar uma olhada.... mas acredito que o método Retrieve tenha assinaturas com outros parametros... para fazer esse serviço...
flw
Gostei + 0
09/09/2010
Welder
Gostei + 0
09/09/2010
Leonardo Bertolini
em modo de debug o valor da propriedade text está vazio....
mas deve ser coisa boba...depois vou dar uma olhada ....
flw
Gostei + 0
09/09/2010
Welder
Gostei + 0
09/09/2010
Leonardo Bertolini
Gostei + 0
10/09/2010
Eustáquio Fernandes
AI mande o código ai pra eu tentar implementar aki,sou iniciante e nao entendi muito bem a forma que vcs explicaram
Gostei + 0
10/09/2010
Welder
Gostei + 0
10/09/2010
Eustáquio Fernandes
Gostei + 0
10/09/2010
Welder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)