2016-05-17 15 views
4

Ich versuche, eine Anwendung mit Delphi zu erstellen, müssen Sie den Gmail-Posteingang lesen und muss E-Mails für spezielle Zwecke verarbeiten.Reagieren GMail-Posteingang mit Indy 10

Ich baute diese Anwendung mit Indy-Komponenten POP3, Teil des Codes ist unten.

procedure TfrmMain.LeerCorreos; 
var 
    mensaje: TIdMessage; 
    i: Integer; 
begin 
    try 
    with POP3 do 
    begin 
     Name := 'POP3'; 
     AutoLogin := False; 
     Host := 'pop.gmail.com'; 
     Username := '*******@gmail.com'; 
     Password := '*****'; 
     Port := 995; 
     IOHandler := IdSSLIOHandlerSocketOpenSSL; 
     UseTLS := utUseImplicitTLS; 
    end; 
    with IdSSLIOHandlerSocketOpenSSL do 
    begin 
     Destination := 'pop.gmail.com:995'; 
     Host := 'pop.gmail.com'; 
     Port := 995; 
     DefaultPort := 0; 
    end; 
    POP3.Connect; 
    try 
     Mensajes.Clear; 
     mensaje := TIdMessage.Create(nil); 
     try 
     for i := 1 to POP3.CheckMessages do 
     begin 
      mensaje.Clear; 
      POP3.RetrieveHeader(i, mensaje); 
      Mensajes.Items.Add; 
      Mensajes.Items[i - 1].SubItems.Add(mensaje.From.Address); 
      Mensajes.Items[i - 1].SubItems.Add(mensaje.Subject); 
      Mensajes.Items[i - 1].SubItems.Add(DateToStr(mensaje.Date)); 
     end; 
     finally 
     FreeAndNil(mensaje); 
     end; 
    finally 
     POP3.Disconnect; 
    end; 
    except 
    on e : Exception do 
     ShowMessage('error=' + e.Message); 
    end; 
end; 

nicht, Antwort-„schlechten Befehl‘

+0

Fantastischen verwenden müssen .... POP3.Login funktioniert. Vielen Dank. –

Antwort

0

"Ok Google"

Getestet mit Indy 10.6.2.5298 und OpenSSL 1.0.2h, Delphi DX10 (nicht aktualisieren 1)

1) Diese Zeile sieht aus wie nicht erforderlich ist. Warum dieser Name Komponente gehen zu setzen, die in Entwurfszeit erstellt wurde?

Name := 'POP3'; 

2) Versuchen Sie nach dem machen Login

POP3.Connect; 
POP3.Login; 

3) anschließen Wenn Sie Fehler wie EIdReplyPOP3Error with message 'Web login required: https://support.google.com/mail/answer/78754 bekommen, vielleicht Sie application specific password oder schalten Sie Allow less secure apps in Google Mail-Einstellungen

enter image description here

+0

Fantastisch ... POP3.Login funktioniert. Danke –

+1

@MiguelMolina: 'TIdPOP3.AutoLogin' ist standardmäßig True. Wenn True, ruft 'TIdPOP3.Connect()' 'TIdPOP3.Login()' automatisch für Sie auf. Da Sie 'TIdPOP3.AutoLogin' auf False setzen, müssen Sie' TIdPOP3.Login() 'manuell aufrufen. –