我正在嘗試與delphi建立一個應用程序,它必須每隔30秒檢查一次gmail收件箱,並且必須處理特殊用途的電子郵件。Indy POP3定期接收電子郵件
使用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;
我有一個問題,我將嘗試在下面解釋;
- 如果我斷開和連接POP3每隔30秒,一些嘗試後 服務器拒絕我的連接,我得到了「套接字錯誤」。如果我不嘗試 每30秒連接一次,只需每30秒檢索一次電子郵件,我就不會收到新電子郵件。
- 而且,如果我沒有斷開連接或使用「DisconnectNotifyPeer」命令,我會一次又一次收到讀取的電子郵件,但如果我能解決上述問題,我會處理此問題,但有關此問題的其他建議也會對我有所幫助。
你覺得呢?我能做些什麼來解決這個問題,而不是每30秒連接一次,但接收新的電子郵件?有沒有像ADO Requery方法或其他方法的命令或函數?
順便說一句,我已經嘗試了一些其他的godaddy郵件帳戶,它也拒絕我的連接3或4次後,我想用gmail(谷歌應用程序)解決這個問題。
謝謝你的幫助。
每30秒連接一次?這肯定會引發一些保護機制。考慮IMAP - 它內置了「長輪詢」(「IDLE」命令 - 服務器在收到新郵件時通知客戶端)。 POP3似乎是這種工作的錯誤工具。 – Piskvor
@Piskvor謝謝。我將其更改爲IMAP並解決了問題。 – adnanturken