΢ÈíµÄVS.Net¿ª·¢¹¤¾ßÍÆ³öÒÑÓÐÒ»¶ÎʱÈÕÁË£¬ÆäÖеÄÄÇÃÅÐÂÓïÑÔC#Ò²ÈÕ½¥Îª´ó¼ÒËùÊìϤ²¢½ÓÊÜ¡£C#×÷ΪһÃÅÐÂÐ˵ÄÓïÑÔÏàОßÓд«Í³ÓïÑÔ²»¿É±ÈÄâµÄÓÅÔ½ÐÔ£¬ÌرðÊÇÔÚÍøÂçÓ¦Ó÷½Ã棬¿ª·¢Õ߸üÊǸоõµ½ÁËC#µÄÇ¿´ó¹¦ÄÜ¡£ËùÒÔ±¾ÎľÍͨ¹ýÔËÓÃC#À´ÊµÏÖÒ»¸ö»ùÓÚPOP3ÐÒéµÄÓʼþ½ÓÊÕ³ÌÐòÀ´Ïò´ó¼ÒչʾC#ÍøÂç±à³ÌµÄ¹¦ÄÜÇ¿´ó£¬Í¬Ê±Ò²Ïò´ó¼Ò½éÉÜһϻùÓÚPOP3ÐÒéµÄµç×ÓÓʼþ½ÓÊÕÔÀí¡£
΢ÈíµÄVS.Net¿ª·¢¹¤¾ßÍÆ³öÒÑÓÐÒ»¶ÎʱÈÕÁË£¬ÆäÖеÄÄÇÃÅÐÂÓïÑÔC#Ò²ÈÕ½¥Îª´ó¼ÒËùÊìϤ²¢½ÓÊÜ¡£C#×÷ΪһÃÅÐÂÐ˵ÄÓïÑÔÏàОßÓд«Í³ÓïÑÔ²»¿É±ÈÄâµÄÓÅÔ½ÐÔ£¬ÌرðÊÇÔÚÍøÂçÓ¦Ó÷½Ã棬¿ª·¢Õ߸üÊǸоõµ½ÁËC#µÄÇ¿´ó¹¦ÄÜ¡£ËùÒÔ±¾ÎľÍͨ¹ýÔËÓÃC#À´ÊµÏÖÒ»¸ö»ùÓÚPOP3ÐÒéµÄÓʼþ½ÓÊÕ³ÌÐòÀ´Ïò´ó¼ÒչʾC#ÍøÂç±à³ÌµÄ¹¦ÄÜÇ¿´ó£¬Í¬Ê±Ò²Ïò´ó¼Ò½éÉÜһϻùÓÚPOP3ÐÒéµÄµç×ÓÓʼþ½ÓÊÕÔÀí¡£
Ê×ÏÈÎÒÏò´ó¼Ò½éÉÜÓʼþ½ÓÊյĻù±¾ÔÀí£º
Ò»¿ªÊ¼±ãÊǿͻ§¶ËÓë·þÎñÆ÷µÄÁ¬½Ó¡£²»¹ý£¬ÔÚ¿Í»§¶ËÁ¬½Óµ½·þÎñÆ÷֮ǰ£¬×¢Òâ°Ñ¶Ë¿ÚÉèΪPOP3ÐÒéĬÈϵÄ110ºÅ¡£
¿Í»§¶ËÁ¬½Ó·þÎñÆ÷³É¹¦ºó£¬·þÎñÆ÷»á·µ»ØÒÔÏÂÐÅÏ¢£º
+OK......
×Ö·û+OKÊÇPOP3ÐÒéµÄ·µ»ØÐÅÏ¢¡£ËüµÄ»ØÓ¦ÐÅÏ¢²»ÏñSMTPÐÒéÄÇÑùÓ÷ḻ¶à±äµÄÊý×Ö±íʾ£¬Ö»ÓÐÁ½¸ö£º+OK»òÕß-ERR¡£ÆäÖУ¬+OK±íʾÁ¬½Ó³É¹¦£¬¶ø-ERRÔò±íʾÁ¬½Óʧ°Ü¡£
½ÓÏÂÀ´£¬¿Í»§¶ËÊäÈëUSER <Óû§Ãû>
¸ÃÃüÁî¸æËß·þÎñÆ÷ÄãµÄÓû§Ãû¡£×¢Ò⣬ÓÐЩ·þÎñÆ÷»áÇø·Ö´óСд×ÖĸµÄ¡£
·þÎñÆ÷·µ»Ø+OKºó£¬¿Í»§¶ËÊäÈëPASS <¿ÚÁî>
·þÎñÆ÷·µ»Ø+OKºó£¬»¹·µ»ØÒ»Ð©ÓÊÏäµÄͳ¼ÆÐÅÏ¢£¬±ÈÈ磺+OK 1 message(s) [1304 byte(s)]
²»Í¬µÄ·þÎñÆ÷·µ»ØµÄÐÅÏ¢¸ñʽ²»Ì«Ò»Ñù£¬ËùÒÔÎÒÃÇ¿ÉÒÔÓÃSTATÃüÁîÀ´²é¿´ÓÊÏäµÄÇé¿ö¡£STATÃüÁîµÄ»ØÓ¦ÖÐÓÐÁ½¸öÊý×Ö£¬·Ö±ð±íʾÓʼþµÄÊýÁ¿ºÍÓʼþµÄ´óС¡£
Èç¹ûÐÅÏäÀïÓÐÐÅ£¬¾Í¿ÉÒÔÓÃRETRÃüÁîÀ´»ñÈ¡ÓʼþµÄÕýÎÄ¡£RETRÃüÁîµÄ¸ñʽΪ£º
RETR <Óʼþ±àºÅ>
Èç¹û·µ»Ø½á¹ûµÚÒ»ÐÐÊÇ+OKÐÅÏ¢£¬Ôò±íʾ³É¹¦¡£µÚ¶þÐÐÆð±ãÊÇÓʼþµÄÕýÎÄ¡£×îºóÒ»ÐкÍSMTPÐÒéÒ»Ñù£¬ÊÇÒ»¸öµ¥¶ÀµÄÓ¢ÎľäºÅ£¬±íʾÓʼþµÄ½áβ²¿·Ö¡£
°ÑÓʼþ´æ´¢ÆðÀ´ºóÒªÓÃDELEÃüÁîɾ³ýÓÊÏäÖеÄÓʼþ£¬·ñÔòÔÓеÄÓʼþ»á¼ÌÐø±£ÁôÔÚ·þÎñÆ÷ÉÏ£¬Ò»µ©ÓʼþÒ»¶à£¬ÄãµÄÓÊÏä¾Í±¬ÁË¡£DELEÃüÁîµÄ¸ñʽΪ£º
DELE <Óʼþ±àºÅ>
Èç¹ûɾ´íÁË£¬¿ÉÒÔÓÃRSETÃüÁîÀ´»Ö¸´ËùÓÐÒѱ»É¾³ýµÄÓʼþ¡£Ìõ¼þÊÇÄ㻹ûÓÐÍ˳ö£¬Ò»µ©Í˳ö£¬ÄǾÍÒ»ÇÐBye ByeÁË¡£È«²¿Íê³ÉÒÔºó£¬ÊäÈëQUITÃüÁî¾Í¿ÉÒÔÍ˳öPOP3·þÎñÆ÷ÁË¡£
ʵÏÖ
ÒÔÉÏ£¬ÎÒ¼òÒªµØÏò´ó¼Ò½éÉÜÁËPOP3Óʼþ½ÓÊյĻù±¾¹ý³ÌºÍÔÀí£¬ÏÂÃæ¾ÍÊÇÒ»¸öÔËÓÃÉÏÃæµÄÔÀíʵÏֵļòÒ×µÄÓʼþ½ÓÊÕ³ÌÐò¡£ÓÐÁ˶Իù±¾ÔÀíµÄÀí½â£¬±à³ÌµÄ¹¤×÷¾Í±äµÃÏ൱ÇáËÉÁË¡£ÔÚ±¾³ÌÐòÖУ¬ÎÒÖ÷ÒªÓõ½ÁËÁ½¸öÀࣺTcpClientÀàºÍNetworkStreamÀà¡£TcpClientÀàÊÇÔËÓÃC#½øÐÐÍøÂç±à³ÌµÄÒ»¸ö·Ç³£ÖØÒªµÄÀ࣬ËüÌṩÁËͨ¹ýÍøÂçÁ¬½Ó¡¢·¢ËͺͽÓÊÕÊý¾ÝµÄ¼òµ¥·½·¨£¬´Ó¶øÊµÏÖÁËÍøÂç±à³ÌµÄ´ó´ó¼ò»¯¡£NetworkStreamÀàʵÏÖͨ¹ýÍøÂçÌ×½Ó×Ö·¢ËͺͽÓÊÕÊý¾ÝµÄ±ê×¼.Net¿ò¼ÜÁ÷»úÖÆ£¬ËüÖ§³Ö¶ÔÍøÂçÊý¾ÝÁ÷µÄͬ²½ºÍÒì²½·ÃÎÊ£¬ÊÇʵÏÖÍøÂçͨѶµÄÖØÒª×é³É²¿·Ö¡£ÔÚÕâÀïÎÒÏȸø³ö³ÌÐò×îÖÕµÄÔËÐÐЧ¹û£¬Í¼Ê¾ÈçÏ£º

¾ßÌåµÄ¹ý³Ì²½ÖèÈçÏ£º
µÚÒ»²½£º´ò¿ªVS.Net£¬Ð½¨Ò»¸ö¹¤³Ì£¬ÔÚÏîÄ¿ÀàÐÍÀïÑ¡Ôñ"Visual C#ÏîÄ¿"£¬ÔÚÄ£°åÀïÑ¡Ôñ"Windows Ó¦ÓóÌÐò"£¬¹¤³ÌÃû²»·ÁΪ"MailReceiver"£¬×îºóµã»÷"È·¶¨"°´Å¥¡£
µÚ¶þ²½£º²¼ÖÃÖ÷½çÃæ¡£ÏÈÍù´°ÌåÉÏÌí¼ÓÈçÏ¿ؼþ£ºÁù¸öLabel¿Ø¼þ¡¢ËĸöTextBox¿Ø¼þ¡¢Ò»¸öRichTextBox¿Ø¼þ¡¢Ò»¸öCheckBox¿Ø¼þ¡¢Ò»¸öListBox¿Ø¼þÒÔ¼°Èý¸öButton¿Ø¼þ¡£¸÷¸ö¿Ø¼þµÄÊôÐÔÉèÖÃÈçϱíËùʾ£º
Form1£¨Ö÷´°Ì壩
TextÊôÐÔ
POP3Óʼþ½ÓÊÕ³ÌÐò
MaximizeBoxÊôÐÔ
False
Label1
TextÊôÐÔ
POP3 ·þÎñÆ÷µØÖ·£º
TextAlignÊôÐÔ
MiddleRight
Label2
TextÊôÐÔ
Óû§Ãû£º
TextAlignÊôÐÔ
MiddleRight
Label3
TextÊôÐÔ
ÃÜÂ룺
TextAlignÊôÐÔ
MiddleRight
Label4
TextÊôÐÔ
ÐÅÏ¢£º
TextAlignÊôÐÔ
MiddleLeft
Label5
TextÊôÐÔ
Óʼþ±àºÅ£º
TextAlignÊôÐÔ
MiddleLeft
Label6
TextÊôÐÔ
״̬£º
TextAlignÊôÐÔ
MiddleLeft
PopServer¡¢Username¡¢Password¡¢MailNum£¨TextBox¿Ø¼þ£©
TextÊôÐÔ
£¨¾ùΪ¿Õ£©
PasswordµÄPasswordCharÊôÐÔ
*
Message£¨RichTextBox¿Ø¼þ£©
TextÊôÐÔ
£¨Îª¿Õ£©
BackupChBox£¨CheckBox¿Ø¼þ£©
TextÊôÐÔ
ÔÚÓʼþ·þÎñÆ÷Éϱ£Áô±¸·Ý
Status£¨ListBox¿Ø¼þ£©
ItemHeightÊôÐÔ
12
Connect£¨Button¿Ø¼þ£©
TextÊôÐÔ
Á¬½Ó
FlatStyleÊôÐÔ
Flat
Disconnect £¨Button¿Ø¼þ£©
TextÊôÐÔ
¶Ï¿ªÁ¬½Ó
FlatStyleÊôÐÔ
Flat
EnabledÊôÐÔ
False
Retrieve£¨Button¿Ø¼þ£©
TextÊôÐÔ
ÊÕÈ¡Óʼþ
FlatStyleÊôÐÔ
Flat
EnabledÊôÐÔ
False
ÆäËûÊôÐÔ¾ù¿ÉΪĬÈÏÖµ¡£ÔÚÉèÖÃÍêÒÔÉϵĸ÷¸ö¿Ø¼þÊôÐԺ󣬶ÔÖ÷´°Ìå½øÐкÏÀíµÄ²¼¾Ö£¬Ôò¿ÉµÃµ½×îÖյĽçÃæ¡£
µÚÈý²½£º´úÂë±àд¡£Ê×ÏÈÒòΪ³ÌÐòÖÐÔËÓõ½ÍøÂç±à³ÌµÄÒ»Ð©ÖØÒªµÄÀ࣬È磺TcpClient¡¢NetworkStream£¬ËùÒÔÔÚ³ÌÐòµÄ¿ªÍ·´¦ÐèÌí¼ÓÒÔÏÂÃû×ֿռ䣨Namespace£©£º
using System.Net;
using System.Net.Sockets;
using System.IO;
½Ó×Å£¬ÎªÎÒÃǵÄÀàÌí¼ÓÒÔÏÂһЩ¹«ÓеÄÊý¾Ý³ÉÔ±£º
public TcpClient Server;
public NetworkStream NetStrm;
public StreamReader RdStrm;
publicstring Data;
publicbyte[] szData;
publicstring CRLF = "\r\n";
×îºó£¬±ãÊÇÈý¸ö°´Å¥µÄÏûÏ¢ÏìÓ¦º¯Êý£¬ÕâÈý¸öº¯ÊýÊdzÌÐòµÄÖ÷Ì岿·Ö¡£ÆäÖÐConnect°´Å¥µÄÏûÏ¢ÏìÓ¦º¯ÊýÍê³ÉÁ˵½POP3·þÎñÆ÷µÄÁ¬½Ó¹¤×÷£¬²¢¸ù¾ÝÓû§ÃûºÍÃÜÂë½øÐеǼ¡£Èç¹ûÒ»ÇÐ˳Àû£¬ÔòÔÙÏò·þÎñÆ÷·¢ËÍSTATÃüÁî´Ó¶ø»ñµÃÓÊÏäÖÐÓʼþµÄÏà¹ØÐÅÏ¢£ºÓʼþÊýÁ¿ºÍ´óС£¬×îÖÕÍê³ÉÁ¬½Ó¡£Æäº¯ÊýʵÏÖÈçÏ£º
privatevoid Connect_Click(object sender, System.EventArgs e)
{
//½«¹â±êÖÃΪµÈ´ý״̬
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
//ÓÃ110¶Ë¿Úн¨POP3·þÎñÆ÷Á¬½Ó
Server = new TcpClient(PopServer.Text,110);
Status.Items.Clear();
try
{
//³õʼ»¯
NetStrm = Server.GetStream();
RdStrm= new StreamReader(Server.GetStream());
Status.Items.Add(RdStrm.ReadLine());
//µÇ¼·þÎñÆ÷¹ý³Ì
Data = "USER "+ Username.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
Data = "PASS "+ Password.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
//Ïò·þÎñÆ÷·¢ËÍSTATÃüÁ´Ó¶øÈ¡µÃÓÊÏäµÄÏà¹ØÐÅÏ¢£ºÓʼþÊýÁ¿ºÍ´óС
Data = "STAT"+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
//¸Ä±ä°´Å¥µÄ״̬
Connect.Enabled = false;
Disconnect.Enabled = true;
Retrieve.Enabled = true;
//½«¹â±êÖûØÔÀ´µÄ״̬
Cursor.Current = cr;
}
catch(InvalidOperationException err)
{
Status.Items.Add("Error: "+err.ToString());
}
}
¶øDisconnect°´Å¥µÄÏûÏ¢ÏìÓ¦º¯ÊýÔòͨ¹ýÏò·þÎñÆ÷·¢ËÍQUITÃüÁîÀ´ÖÕÖ¹ºÍÓʼþ·þÎñÆ÷µÄÁ¬½Ó£¬ÊµÏֱȽϼòµ¥£¬¾ßÌ庯ÊýÈçÏ£º
privatevoid Disconnect_Click(object sender, System.EventArgs e)
{
//½«¹â±êÖÃΪµÈ´ý״̬
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
//Ïò·þÎñÆ÷·¢ËÍQUITÃüÁî´Ó¶ø½áÊøºÍPOP3·þÎñÆ÷µÄ»á»°
Data = "QUIT"+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
//¶Ï¿ªÁ¬½Ó
NetStrm.Close();
RdStrm.Close();
//¸Ä±ä°´Å¥µÄ״̬
Connect.Enabled = true;
Disconnect.Enabled = false;
Retrieve.Enabled = false;
//½«¹â±êÖûØÔÀ´µÄ״̬
Cursor.Current = cr;
}
×îºó£¬Retrieve°´Å¥µÄÏûÏ¢ÏìÓ¦º¯ÊýÔò¸ù¾ÝÓû§ÔÚÓʼþ±àºÅÎı¾¿òÖеÄÊäÈëÀ´È¡µÃÏàÓ¦µÄÓʼþ£¬ËüÏò·þÎñÆ÷·¢Ë͵ÄÃüÁîΪRETR£¬²¢¸ù¾Ý·µ»ØµÄÐÅÏ¢ÅжÏÓʼþµÄÓÐÎÞ¡£Èô·µ»ØÐÅÏ¢µÄµÚÒ»¸ö×Ö·ûΪ"+"£¬Ôò±íʾ+OK£¬Ò²¼´³É¹¦£»ÈôΪ"-"£¬Ôò±íʾ-ERR£¬Ò²¼´ÎªÊ§°Ü¡£Ôڳɹ¦µÄÇé¿öÏ£¬ÈôÓû§Ñ¡ÔñÁË"ÔÚÓʼþ·þÎñÆ÷Éϱ£Áô±¸·Ý"£¬ÔòÊÕÈ¡Óʼþºó²»É¾³ý·þÎñÆ÷Éϵı¸·Ý£¬·ñÔòÓÃDELEÃüÁîÀ´½øÐÐÏàÓ¦µÄɾ³ý¡£º¯ÊýʵÏÖÈçÏ£º
privatevoid Retrieve_Click(object sender, System.EventArgs e)
{
//½«¹â±êÖÃΪµÈ´ý״̬
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
string szTemp;
Message.Clear();
try
{
//¸ù¾ÝÓʼþ±àºÅ´Ó·þÎñÆ÷»ñµÃÏàÓ¦Óʼþ
Data = "RETR "+ MailNum.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
szTemp = RdStrm.ReadLine();
if(szTemp[0]!='-')
{
//²»¶ÏµØ¶ÁÈ¡ÓʼþÄÚÈÝ£¬Ö»µ½½áÊø±êÖ¾£ºÓ¢ÎľäºÅ
while(szTemp!=".")
{
Message.Text += szTemp;
szTemp = RdStrm.ReadLine();
}
//ÈôBackupChBoxδѡÖУ¬ÔòÊÕÈ¡Óʼþºó£¬É¾³ý±£ÁôÔÚ·þÎñÆ÷ÉϵÄÓʼþ
if(BackupChBox.Checked == false)
{
Data = "DELE" + MailNum.Text + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
}
}
else
{
Status.Items.Add(szTemp);
}
//½«¹â±êÖûØÔÀ´µÄ״̬
Cursor.Current = cr;
}
catch(InvalidOperationException err)
{
Status.Items.Add("Error: "+err.ToString());
}
}
×îºóÒ»²½±ãÊDZ£´æÄãµÄÀͶ¯³É¹û£¬ÔÙ½øÐбàÒë¡¢½¨Á¢²¢ÔËÐÐÁË£¬×îÖÕµÄͼʾÎÒÒѾÔÚÎÄÕµĿªÍ·´¦¸ø³öÁË£¬»¹Ðаɡ£
µ½´¦ÎªÖ¹£¬ÎÒÃÇÒѾÍê³ÉÁËPOP3Óʼþ½ÓÊÕ³ÌÐòµÄÈ«²¿¹¤×÷ÁË¡£´ÓÖУ¬ÎÒÃDz»ÄÑ·¢ÏÖÔËÓÃC#Íê³ÉÒ»Ð©ÍøÂçʵÓñà³ÌÊǷdz£ÈÝÒ׵ġ£Ö»ÒªÎÒÃÇÕÆÎÕÁËÆäÖеÄÔÀí£¬¾ßÌåµÄ±à³Ì¹¤×÷¾Í±äµÃ·Ç³£µÄÇáËɶøÇÒÓÐÌõÀí¡£¼´Ê¹ÒÔǰÄã¶ÔPOP3Óʼþ½ÓÊÕµÄʵÏÖÒ»ÎÞËùÖª£¬ÎÒÏëÔÚ¿´ÍêÕâÆªÎÄÕºó£¬Äã¶ÔËüÖÁÉÙ»áÓÐÁ˸ö´ó¸ÅµÄÁ˽⡣²»¹ý£¬»¹ÒªÖ¸³öµÄÊÇÕâÖ»ÊÇÒ»¸öºÜ¼òµ¥µÄʵÀý£¬Èç¹ûÒªÔÚʵ¼ÊÖÐÓ¦Óã¬Ôò»¹Ðè´ó´óµÄ¸Ä½ø£¬ÓÐÐËȤµÄ¶ÁÕß²»·ÁÒ»ÊÔ¡£,