![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Код:
uses WinSock;
function CheckDomain(Domain: string): Boolean;
var
Error: DWORD;
HostEntry: PHostEnt;
Data: WSAData;
Address: In_Addr;
begin
Result:=false;
Error:=WSAStartup(MakeWord(1, 1), Data);
if Error=0 then
begin
HostEntry:=GetHostByName(PChar(Domain));
Result:=GetLastError=0;
end;
WSACleanup();
end;
function CheckEmailAddr(Addr: string): Boolean;
var
p,i: integer;
User, Domain: string;
begin
Result:=false;
Addr:=AnsiLowerCase(Addr);
P:=Pos('@', Addr);
if P=0
then Exit;
User:=Copy(Addr,1,P-1);
Domain:=Copy(Addr, P+1, Length(Addr)-P);
for i:=1 to Length(User) do
if not (User[i] in ['a'..'z', '0'..'9', '.', '-', '_'])
then Exit;
Result:=CheckDomain('www.'+Domain);
if not Result
then Result:=CheckDomain(Domain);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckEmailAddr(Edit1.Text)=true
then ShowMessage('E-mail существует!')
else ShowMessage('E-mail НЕ существует!');
end; |
|
#2
|
||||
|
||||
|
Я думаю не прокатит (но можно проверить). У меня имеется на Мэйле адрес на который эти удоды потеряли пароль, восстанавливать я не стал. И что покажет?
|
|
#3
|
||||
|
||||
|
Тут покажет что существует, короче этот код правду не покажет (мэйл на все запросы отвечает утвердительно), надо делать специально под каждый сервис почтовый и то еще останутся ограничения, ну если конечно Вы будете пакетно проверять.
ЗЫ У меня есть программа, которая проверяет все это дело и заточена под все основные сервисы, если интересно, подкину огрызок кода от майла. |
|
#4
|
||||
|
||||
|
Подкинь, любопытно посмотреть.
|
|
#5
|
||||
|
||||
|
Код:
function TForm1.ValidMailRuEmailStatus(EMail: String): Boolean;
var
ASource: TIdMultiPartFormDataStream;
S { , M, N } : String;
I, I2: Integer;
begin
LOG(EMail);
//
IdHTTP1.HandleRedirects := FALSE; // Обяз-но!
IdHTTP1.AllowCookies := FALSE;
IdHTTP1.ReadTimeout := 10000; // !!!!!!!!
IdHTTP1.ConnectTimeout := 10000; // !!!!!!!!!!
//
ASource := TIdMultiPartFormDataStream.Create;
try
ASource.AddFormField('action', 'login');
ASource.AddFormField('Username', GetLogin(EMail));
ASource.AddFormField('Domain', GetDomain(EMail));
// GetValue обновить и использовать
// showmessage(GetValue('', EMail, '', '@', I));
// showmessage(GetValue('', EMail, '@', '', I));
try
S := IdHTTP1.Post('http://e.mail.ru/cgi-bin/passremind', ASource
{ , ms } );
except
// LOG('ValidWhoIsEmailStatus: POST To "'+EMail+'" Failed');
end;
finally
ASource.Free;
end;
LOG(IdHTTP1.ResponseText);
if idHTTP1.Connected then
IdHTTP1.Disconnect;
// LOG(idHTTP1.ResponseText);
// memo1.Lines.Add(S);
I := PosNew('Пользователь отсутствует', S);
{if I = 0 then
LOG('User Exists') else
LOG('User NOT Exists');}
I2 := PosNew('Не существует такого пользователя', S, I);
RESULT := (I = 0) and (I2 = 0);
//Sleep(500);
end; |
|
#6
|
||||
|
||||
|
Спасибо, посмотрю.
|