分享
 
 
 

ASP.NET读取POP3邮件的操作

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

namespace POP3Client

{

using System.IO ;

using System.Net;

using System.Net.Sockets ;

//Please note that all code is copyright 2002 by William J Dean

public class POP3client

{

public enum connect_state {disc,AUTHORIZATION,TRANSACTION,UPDATE};

public string user;

public string pwd;

public string pop;

public bool error;

public connect_state state=connect_state.disc ;

//borrowed from Agus Kurniawan's article:"Retrieve Mail From a POP3 Server Using C#"at http://www.codeproject.com/csharp/popapp.asp

private TcpClient Server;

private NetworkStream NetStrm;

private StreamReaderRdStrm;

private string Data;

private byte[] szData;

private string CRLF = "\r\n";

public POP3client()

{

//nothing to do..just create to object

}

public POP3client(string pop_server,string user_name,string password)

{

//put the specied server (pop_server), user (user_name) and password (password)

//into the appropriate properties.

pop=pop_server;

user=user_name;

pwd=password;

}

#region Utility Methods, some public, some private

public string connect (string pop_server)

{

pop=pop_server;//put the specified server into the pop property

return(connect()); //call the connect method

}

public string connect()

{

//Initialize to the pop server.This code snipped "borrowed"

//with some modifications...

//from the article "Retrieve Mail From a POP3 Server Using C#" at

//www.codeproject.com by Agus Kurniawan

//http://www.codeproject.com/csharp/popapp.asp

// create server with port 110

Server = new TcpClient(pop,110);

try

{

// initialization

NetStrm = Server.GetStream();

RdStrm= new StreamReader(Server.GetStream());

//The pop session is now in the AUTHORIZATION state

state=connect_state.AUTHORIZATION ;

return(RdStrm.ReadLine ());

}

catch(InvalidOperationException err)

{

return("Error: "+err.ToString());

}

}

private string disconnect ()

{

string temp="disconnected successfully.";

if(state !=connect_state.disc)

{

//close connection

NetStrm.Close();

RdStrm.Close();

state=connect_state.disc ;

}

else

{

temp="Not Connected.";

}

return(temp);

}

private void issue_command(string command)

{

//send the command to the pop server.This code snipped "borrowed"

//with some modifications...

//from the article "Retrieve Mail From a POP3 Server Using C#" at

//www.codeproject.com by Agus Kurniawan

//http://www.codeproject.com/csharp/popapp.asp

Data= command + CRLF;

szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());

NetStrm.Write(szData,0,szData.Length);

}

private string read_single_line_response()

{

//read the response of the pop server.This code snipped "borrowed"

//with some modifications...

//from the article "Retrieve Mail From a POP3 Server Using C#" at

//www.codeproject.com by Agus Kurniawan

//http://www.codeproject.com/csharp/popapp.asp

string temp;

try

{

temp = RdStrm.ReadLine();

was_pop_error(temp);

return(temp);

}

catch(InvalidOperationException err)

{

return("Error in read_single_line_response(): " + err.ToString ()) ;

}

}

private string read_multi_line_response()

{

//read the response of the pop server.This code snipped "borrowed"

//with some modifications...

//from the article "Retrieve Mail From a POP3 Server Using C#" at

//www.codeproject.com by Agus Kurniawan

//http://www.codeproject.com/csharp/popapp.asp

string temp="";

string szTemp;

try

{

szTemp = RdStrm.ReadLine();

was_pop_error(szTemp);

if(!error)

{

while(szTemp!=".")

{

temp += szTemp+CRLF;

szTemp = RdStrm.ReadLine();

}

}

else

{

temp=szTemp;

}

return(temp);

}

catch(InvalidOperationException err)

{

return("Error in read_multi_line_response(): " + err.ToString ());

}

}

private void was_pop_error(string response)

{

//detect if the pop server that issued the response believes that

//an error has occured.

if(response.StartsWith ("-"))

{

//if the first character of the response is "-" then the

//pop server has encountered an error executing the last

//command send by the client

error=true;

}

else

{

//success

error=false;

}

}

#endregion

#region POP commands

public string DELE(int msg_number)

{

string temp;

if (state != connect_state.TRANSACTION )

{

//DELE is only valid when the pop session is in the TRANSACTION STATE

temp="Connection state not = TRANSACTION";

}

else

{

issue_command("DELE " + msg_number.ToString ());

temp=read_single_line_response();

}

return(temp);

}

public string LIST()

{

string temp="";

if (state != connect_state.TRANSACTION )

{

//the pop command LIST is only valid in the TRANSACTION state

temp="Connection state not = TRANSACTION";

}

else

{

issue_command ("LIST");

temp=read_multi_line_response();

}

return(temp);

}

public string LIST(int msg_number)

{

string temp="";

if (state != connect_state.TRANSACTION )

{

//the pop command LIST is only valid in the TRANSACTION state

temp="Connection state not = TRANSACTION";

}

else

{

issue_command ("LIST " + msg_number.ToString ());

temp=read_single_line_response();//when the message number is supplied, expect a single line response

}

return(temp);

}

public string NOOP()

{

string temp;

if (state != connect_state.TRANSACTION )

{

//the pop command NOOP is only valid in the TRANSACTION state

temp="Connection state not = TRANSACTION";

}

else

{

issue_command ("NOOP");

temp=read_single_line_response();

}

return(temp);

}

public string PASS()

{

string temp;

if (state != connect_state.AUTHORIZATION)

{

//the pop command PASS is only valid in the AUTHORIZATION state

temp="Connection state not = AUTHORIZATION";

}

else

{

if (pwd !=null)

{

issue_command ("PASS " + pwd);

temp=read_single_line_response();

if (!error)

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有