我尝试使用Delphi构建应用程序,您必须阅读Gmail收件箱,并且必须处理特殊用途的电子邮件。
我使用Indy组件POP3构建了这个应用程序,部分代码如下。
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;
不工作,回应"糟糕的命令'
答案 0 :(得分:0)
"好的谷歌!"
使用Indy 10.6.2.5298和OpenSSL 1.0.2h,Delphi DX10(非更新1)进行测试
1)这条线看起来不是必需的。为什么要将名称设置为在设计时创建的组件?
Name := 'POP3';
2)尝试在连接后登录
POP3.Connect;
POP3.Login;
3)如果您收到类似EIdReplyPOP3Error with message 'Web login required: https://support.google.com/mail/answer/78754
的错误,可能必须使用application specific password
或在Gmail设置中启用Allow less secure apps