Здравствуйте! Подскажите, как реализовать проверку почты на наличие новых сообщений? Отправка удаётся с помощью пакета 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
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8