网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
监视Pop3信箱
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
机 的 名字,Port 指 定 端 口 号。

function Connect_Server(host:string;Port:integer):integer;

var i:integer;

p:^LongInt;

phe:pHostEnt;

sin:sockaddr_in;

begin

sin.sin_family:=AF_INET;

sin.sin_port:=htons(Port);

//Get the IP for host, allowing for dotted decimal

phe:=gethostbyname(pchar(host));

if phe<>nil

then begin

p:=Pointer(phe^.h_addr_list^);

sin.sin_addr.s_addr:=p^;

end

else begin

i:=inet_addr(PChar(Host));

if i<> -1 then sin.sin_addr.S_addr:=i

end;

//create a socket

Result:=socket(PF_INET,SOCK_STREAM,0);

if (Result=INVALID_SOCKET) then Exit;

//connect to server

if Connect(Result,sin,sizeof(sin))=SOCKET_ERROR

then begin {Error handling} end;

end;


Write_Socket 函 数
  功 能: 向Socket 写 入 一 个 字 符串。

function Write_Socket(sockfd:Integer; const s:string):Integer;

begin

result:=Winsock.Send(sockfd,pointer(s)^,Length(s),0)

end;


Socket_Readline 函 数
  功 能: 从Socket 上 读 取 一 行。

function Socket_Readline(sockfd:Integer):String;

//Read until #10

var S:String; buf:array[0..1]of Char;

n:Cardinal;

begin

buf[0]:= #0;buf:= #0; S:=‘'';

n:=recv(sockfd,Buf,1,0);

while n>0 do begin

buf:= #0;

S:=S +buf;

if (buf[0]= #10) then Break;

n:=recv(sockfd, buf, 1, 0);

end;

Result:=Trim(S);

end;


Pop3Response 函 数
  功 能: 读 取POP3 服 务 器 的 一 行返 回 信 息, 如 果 是“ +OK” 则 函 数 返 回TURE, 如 果 是“ -ERR” 则 返 回FALSE。

function Pop3Response(Sockfd:Integer):Bool;

var S: string;

begin

S:=socket_readline(sockfd);

if copy(s,1,3)=‘ +OK'' then Result:=True

else {if copy(s,1,4)=‘ -ERR'' then }Result:=False;

end;


POP3CheckMail 函 数
  功 能: 检 测 名 字 为email 的 信 箱,如 果 有 新 邮 件, 则 通 过 变 量 参 数MailList 将 每 一 封 邮 件 的 大小 返 回。

function POP3CheckMail

(Email,Password:String;var MailList:

TStringList;var ErrorMsg:String):Bool;

var sockfd,i:integer;

S, Host, User:String;

begin

Result:=False; ErrorMsg:=‘'';

if MailList=nil then Exit;

S:=Trim(Email);

i:=Pos(‘@'',Email);

User:=Trim(Copy(S,1,i -1));

Host:=Trim(Copy(S,i +1,Length(Email) -i));

MailList.Clear;

if (user=‘'')or(host=‘'') then begin

ErrorMsg:=‘Invalid email address.'';exit; end;

if (Host=‘['')and (Host[Length(host)]=‘]'')

then begin Host:=‘ '';Host[Length(host)]:= #0;end;

Host:=Trim(host);

sockfd:=Connect_Server(Host,110);

if not Pop3Response(sockfd)then begin ErrorMsg:=

‘Cannot connect to server'';exit; end;

Write_Socket(sockfd,‘USER '' +User + #13 #10);

IF NOT POP3Response(sockfd) then begin ErrorMsg:=

‘USER failed''; Exit;end;

Write_Socket(sockfd,‘PASS '' +Password + #13 #10);

IF NOT POP3Response(sockfd) then begin ErrorMsg:=

‘PASS failed''; Exit;end;

Write_Socket(sockfd,‘LIST'' #13 #10);

POP3Response(sockfd);

while true do begin

s:=Socket_readline(sockfd);

if s=‘.'' then BREAK;

MailList.Add(S);

end;

Write_Socket(sockfd,‘QUIT'' #13 #10);

Closesocket(sockfd);

Result:=True;

end;


三、 邮 件 的 检 测
  下 面 我 们 来 看 一 个 使 用POP3CheckMail 函 数 的 简 单 示 例。

var MailList:TstringList;

ErrorMs

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号