我正在尝试使用Delphi构建一个应用程序,该应用程序需要每30秒检查一次Gmail收件箱,并处理特定目的的电子邮件。
已经使用Indy POP3组件构建了该应用程序,以下是部分代码。
If Not POP3.Connected Then
Begin
POP3.Host := 'pop.gmail.com';
POP3.Port := 995;
POP3.Username := 'email';
POP3.Password := 'password';
SSL.Host := POP3.Host;
SSL.Port := POP3.Port;
SSL.Destination := SSL.Host + ':' + IntToStr(SSL.Port);
POP3.IOHandler := SSL;
POP3.UseTLS := utUseImplicitTLS;
// try etc...
POP3.Connect;
End;
MsgCnt := POP3.CheckMessages;
For i := 1 To MsgCnt Do
Begin
POP3.Retrieve(i, Msg);
// process message.. etc..
End;
我有一个问题需要解决,以下是具体情况:
- 如果我每30秒就断开并重新连接POP3,经过多次尝试后服务器会拒绝我的连接,并显示“socket error”。如果我不每30秒重连而是每30秒检索一次邮件,我就无法获取新邮件。
- 此外,如果我没有断开连接或使用“DisconnectNotifyPeer”命令,则我会一遍又一遍地接收已读邮件,但只要我能解决上述问题,我也能解决这个问题。但是,如果您有其他建议,则对此问题也会有所帮助。
您认为我该怎么办才能解决这个问题呢?我不想每30秒连接一次,但又希望能够收到新邮件。是否有像ADO Requery方法之类的命令或函数可以实现这样的功能呢?
顺便说一下,我已经尝试过在一些其他godaddy邮件帐户上操作,它们也在工作了3或4次后拒绝了我的连接。我希望能解决这个问题并在gmail(google apps)上使用。
感谢您的帮助。
IDLE
命令 - 服务器在接收到新邮件时通知客户端)。POP3似乎不适合这种工作。 - Piskvor left the building