无法使用 Indy 从 Gmail 获取电子邮件

问题描述

我经常使用 TIdPOP3,而且效果很好,除了 GMail 帐户。

不知何故,它永远不起作用。我尝试了不同的组合和端口,使用和不使用 SSL,它总是返回不同的错误

我最近的尝试是在 Gmail 上创建一个“特定于应用程序”的密码,并尝试在端口 995 上使用此密码进行连接。这次它返回“连接正常关闭”。

Resolving hostname pop.gmail.com.
Connecting to 172.217.192.108.
Connected.
disconnected.
Connection Closed Gracefully.

我也试过这个:

popb.Host := 'pop.gmail.com';
popb.username := 'myacount@gmail.com';
popb.password := 'mypassword';
popb.Port := 995;
popb.IOHandler := sslpop;
popb.UseTLS := utUseImplicitTLS;
with sslpop do
begin
  Destination := 'pop.gmail.com:995';
  Host := 'pop.gmail.com';
  Port := 995;
  DefaultPort := 0;
end;

在最后一个例子中,它返回这个错误

使用 SSL 连接时出错。错误:00000006:lib(0):func(0):EVP lib

我尝试获取的这个特定帐户具有两步验证;这是否使它无法与 Indy 一起使用?

解决方法

我可以通过设置 Ssloptions.Method := sslvSSLv23 来解决这个问题。

这是完整的工作代码:

    pop.Host := 'pop.gmail.com';
    pop.username := 'myemail@gmail.com';
    pop.password := 'mypassword';
    pop.Port := 995;
    pop.IOHandler := sslpop;
    pop.UseTLS := utUseImplicitTLS;
    with sslpop do
    begin
      Destination := 'pop.gmail.com:995';
      Ssloptions.Method := sslvSSLv23;
      Host := 'pop.gmail.com';
      Port := 995;
      DefaultPort := 0;
    end;