Здравствуйте! Подскажите, как реализовать проверку почты на наличие новых сообщений? Отправка удаётся с помощью пакета LNET (пакет SMTP). А вот как проверить почту?
Lazarus
Ubuntu 12.04
			
		Модератор: Модераторы
var POP: TPOP3Send;
begin
  POP:=TPOP3Send.Create;
  Pop.AutoTLS := False;
  POP.AuthType:=Pop3AuthLogin;
  POP.Password:='pass';
  POP.UserName:='123@mail.ru';
  POP.TargetHost:='pop.mail.ru';
  POP.TargetPort:='995';
  POP.FullSSL:=True;
  Pop.Sock.SSL.SSLType := Pop.Sock.SSL.SSLType.LT_SSLv3;
if POP.Login then
    begin
     //успешно зашли на почту
    end
  else
  begin
   //ошибка подключения
  POP.Free;
  end;                                       \0

flowdoc писал(а):pop3 на 110 (без шифрования) и 995 и (с шифрованием)
Добавлено спустя 23 минуты 22 секунды:
скачал пакет Synapse. пытаюсь использовать так:
- Код: Выделить всё
var POP: TPOP3Send;
begin
POP:=TPOP3Send.Create;
Pop.AutoTLS := False;
POP.AuthType:=Pop3AuthLogin;
POP.Password:='pass';
POP.UserName:='123@mail.ru';
POP.TargetHost:='pop.mail.ru';
POP.TargetPort:='995';
POP.FullSSL:=True;
Pop.Sock.SSL.SSLType := Pop.Sock.SSL.SSLType.LT_SSLv3;
if POP.Login then
begin
//успешно зашли на почту
end
else
begin
//ошибка подключения
POP.Free;
end; \0
Этот код не работает, почему?

*Rik* писал(а):Да, в настройках почтовых ящиков на яндексе и майл.ру надо включать обцию "Разрешить использование внешних программ", чтобы вы не только браузером туда ломиться могли, иначе не пустит.
flowdoc писал(а):*Rik* писал(а):Да, в настройках почтовых ящиков на яндексе и майл.ру надо включать обцию "Разрешить использование внешних программ", чтобы вы не только браузером туда ломиться могли, иначе не пустит.
что то не могу найти такую настройку в mail.ru

*Rik* писал(а):Чтобы работал SSL, надо к своему проекту подключить модуль ssl_openssl(из synapse) в раздел uses любого модуля.
В папке с вашей программой или системном каталоге должны быть:
для Linux - libssl.so, libcrypto.so (под Linux имена библиотек обычно отличаются, там ещё версия дописана, поэтому надо создавать симлинки, если либа обновится и будет под новым именем, надо процесс создания симлинков повторить)
Эта строка лишняя, у меня яндекс и майл.ру без неё работают
Pop.Sock.SSL.SSLType := Pop.Sock.SSL.SSLType.LT_SSLv3;
Да, в настройках почтовых ящиков на яндексе и майл.ру надо включать обцию "Разрешить использование внешних программ", чтобы вы не только браузером туда ломиться могли, иначе не пустит.
uses
...  
blcksock, smtpsend, pop3send, ssl_openssl;
 
...
 pop3 := TPOP3Send.Create();
  try
    pop3.AutoTLS := false;
    pop3.Username := LabeledEdit1.Text;
    pop3.Password := LabeledEdit2.Text;
    pop3.TargetHost := 'pop.mail.ru';
    pop3.TargetPort := '995';
    pop3.FullSSL := true;
    pop3.Sock.SSL.SSLType := LT_SSLv3;
    pop3.Sock.SSLDoConnect();
    if not pop3.Login() then
    begin
      showmessage('login error'+sLineBreak+pop3.Username+sLineBreak+pop3.Password);
      exit;
    end
       else
    begin
      if pop3.Stat then
        begin
          Label2.Caption:=IntToStr(pop3.StatCount);
          Label4.Caption:=IntToStr(pop3.StatSize);
        end;
        if pop3.Capability then
           Memo1.Lines.Assign(pop3.FullResult);
    end;
  finally
  end;
flowdoc писал(а):всё сделал, всё равно не работает

method TMainForm.Button1Click(Sender: TObject);
var
  PP3: TPOP3Send;
begin
  PP3 = TPOP3Send.Create;
  try
    PP3.FullSSL = True;
    PP3.AuthType = POP3AuthLogin;
    PP3.UserName = '123@mail.ru';
    PP3.Password = '123';
    PP3.TargetHost = 'pop.mail.ru';
    PP3.TargetPort = '995';
    PP3.Sock.OnStatus = @OnStatus;
    if PP3.Login then
      if PP3.Stat then
        ShowMessage('Всего сообщений' + IntToStr(PP3.StatCount));
      end;
      PP3.Logout;
    else
      ShowMessage('Не удалось соединиться с сервером');
    end;
  finally
    PP3.Free;
  end;
end;
method TMainForm.AddMsg(S: string);
var
  I: Integer;
begin
  I = ListBox1.Items.Add(S);
  ListBox1.ItemIndex = I;
end;
method TMainForm.OnStatus(Sender: TObject; Reason: THookSocketReason; const Value: String);
begin
  case Reason of
    HR_ResolvingBegin: AddMsg(Value + ': Reason = HR_ResolvingBegin');
    HR_ResolvingEnd: AddMsg(Value + ': Reason = HR_ResolvingEnd');
    HR_SocketCreate: AddMsg('сокет создан');
    HR_SocketClose: AddMsg('сокет закрыт');
    HR_Bind: AddMsg(Value + ': Reason = HR_Bind');
    HR_Connect: AddMsg(Value + ': Reason = HR_Connect');
    HR_CanRead: AddMsg(Value + ': Reason = HR_CanRead');
    HR_CanWrite: AddMsg(Value + ': Reason = HR_CanWrite');
    HR_Listen: AddMsg(Value + ': Reason = HR_Listen');
    HR_Accept: AddMsg(Value + ': Reason = HR_Accept');
    HR_ReadCount: AddMsg(Value + ': Reason = HR_ReadCount');
    HR_WriteCount: AddMsg(Value + ': Reason = HR_WriteCount');
    HR_Wait: AddMsg(Value + ': Reason = HR_Wait');
    HR_Error: AddMsg(Value + ': Reason = HR_Error');
  end;
end;        \0

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1