Indy POP3 периодически получает электронную почту - PullRequest
3 голосов
/ 13 декабря 2011

Я пытаюсь создать приложение с помощью delphi, которое каждые 30 секунд должно проверять входящие Gmail и обрабатывать электронные письма для специальных целей.

Создайте это приложение, используя компонент POP3 Indy, часть кода приведена ниже.

    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 Mail, он также отказался от моего соединения после того, как он работал 3 или 4 раза, я хочу решить эту проблему с помощью Gmail (приложения Google).

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Вы не показываете весь свой код, но я предполагаю, что вы оставляете элемент управления POP3 подключенным к серверу ... в конечном итоге сервер отключает вас и отключает вас.

connect
checkmessages
save messages
disconnect

Вы должны иметь возможность подключаться каждые 30-60 секунд через POP3, если вы правильно отключаетесь. Но если вы хотите оставаться на связи и немедленно обновлять новую почту, это функциональность IMAP, а не POP3.

0 голосов
/ 13 декабря 2011

30 секунд слишком часто.Используйте более длительный интервал, скажем, по крайней мере, несколько минут.

Что касается отсутствия новых писем при подключении к серверу POP3, почтовый ящик блокируется при входе в систему и остается заблокированным до тех пор, пока вы не отключитесь.Вы можете видеть и манипулировать только сообщениями, которые присутствуют на момент входа в систему.Это лежит в основе дизайна POP3.Он не предназначен для общего управления папками / сообщениями.Именно для этого предназначен IMAP (как вы уже обнаружили).POP3 предназначен только для загрузки и удаления сообщений, поэтому просто загрузите / удалите сообщения, отключитесь и немного подождите, чтобы сделать это снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...