입력한 메일 주소가 적법한지 확인

2210 단어 Delphi
unit UMailAddressCheck;

interface

uses Windows, Classes, Registry, SysUtils, StrUtils, Dialogs, Forms;

function IsVaildAllEmailAddr(EmailAddr: string): boolean;

implementation

function DelimitBySemicolon(const Str: string;Postion: integer): string;
var
  ts:Tstringlist;
begin
  Result :='';
  ts := Tstringlist.Create;
  ts.Delimiter:=';';
  ts.DelimitedText:=Str;
  Result := ts.Strings[Postion];
  ts.Free; 
end;

function IsVaildEmailAddr(EmailAddr: string): boolean;
var
  Number, I: integer; //Number     '@'  
  TempStr: string;
begin
  if Length(EmailAddr)=0 then
  begin
   Result:=True;
   Exit;
  end;

  TempStr := EmailAddr;
  Number := 0;
  for I := 1 to Length(TempStr) do
  begin
    if (TempStr[I] = '@') then
      INC(Number);
  end;
  if ((Number = 0) or (Number > 1)) then
    Result := False //       '@',       1,    
  else
  begin
    if ((TempStr[1] = '@') or (TempStr[length(TempStr)] = '@')) then
      Result := False //    '@'             ,    
    else
    begin
      I := pos('@', TempStr); //    '@'         
      delete(TempStr, 1, I); //        '@'       
      if (Length(TempStr) < 3) then
        Result := False //           3,    
      else
      begin
        if ((pos('.', TempStr) = 0) or (pos('.', TempStr) = length(TempStr))
          or (pos('.', TempStr) = 1)) then
          Result := False //              '.',      //         ,    
        else
          Result := True; //        ,           
      end;
    end;
  end;
end;

function IsVaildAllEmailAddr(EmailAddr: string): boolean;
var
  ts:Tstringlist;
  EmailCount,I:integer;
  MailAddr,MsgStr:string;
begin
  Result:=True;
  ts := Tstringlist.Create;
  ts.Delimiter:=';';
  ts.DelimitedText:=EmailAddr;
  EmailCount:= ts.Count ;
  ts.Free;
  for I:= 0 to EmailCount-1 do
  begin
    MailAddr:= DelimitBySemicolon(EmailAddr,i);
  if not IsVaildEmailAddr(MailAddr) then
   begin
     MsgStr:=Format('        %s   ',[MailAddr]);
    MessageDlg(MsgStr, mtInformation, [mbOk], 0);
    Result:=False;
    Exit;
   end;
  end;
end;
end.

좋은 웹페이지 즐겨찾기