?? class1.cs
字號(hào):
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace 利用POP3協(xié)議收取電子郵件
{
/// <summary>
/// Class1 的摘要說明。
/// </summary>
class Class1
{
/// <summary>
/// 應(yīng)用程序的主入口點(diǎn)。
/// </summary>
private static TcpClient tpServer ;
private static byte[] byData ;
//設(shè)定一個(gè)字節(jié)數(shù)組,用以存放向POP3服務(wù)器傳送的命令
private static string CRLF = "\r\n" ;
//定義回車換行符
private static string sRec ;
//定義一個(gè)字符串,用以存放從POP3服務(wù)器反饋數(shù)據(jù)
private static string sData ;
//定義一個(gè)字符串,用以存放向POP3服務(wù)器傳送的命令字符串
private static NetworkStream nsStream;
private static StreamReader rdStream;
[STAThread]
static void Main(string[] args)
{
if ( LoadPOP ( "pop.21cn.com" , "majinhu" , "123456" ) )
{
sData = "RETR 1" + CRLF ;
//定義獲取帳戶中郵件數(shù)目和占用空間的命令
byData = System.Text.Encoding.Default.GetBytes ( sData.ToCharArray ( ) ) ;
nsStream.Write ( byData , 0 , byData.Length ) ;
//向POP3服務(wù)器傳送獲取帳戶中郵件數(shù)目和占用空間的命令
sRec = rdStream.ReadLine();
//接收服務(wù)器反饋的數(shù)據(jù)
/*
以下代碼是收取帳戶中的第一封郵件,并提取數(shù)據(jù)
*/
bool strBody = false ;
string[ ] arrRet =new string[ 6 ] ;
string[ ] arrTemp;
if( sRec != "-" )
{
while(sRec !=".")
{
arrTemp = sRec.Split ( ":".ToCharArray ( ) ) ;
if ( sRec == "" )
strBody = true ;
if ( arrTemp[0] == "Date" )
arrRet[1] = arrTemp[1] ;
if (arrTemp[0] == "From" )
arrRet[2] = arrTemp[1] ;
if (arrTemp[0] == "To" )
arrRet[3] = arrTemp[1] ;
if (arrTemp[0] == "Subject" )
arrRet[4] = arrTemp[1] ;
if ( strBody )
arrRet[5] = arrRet[5] + sRec ;
sRec = rdStream.ReadLine ( ) ;
}
}
Console.WriteLine ( "發(fā)送時(shí)間:" + arrRet[1] ) ;
//顯示郵件發(fā)送時(shí)間信息
Console.WriteLine ( "發(fā)送者:" + arrRet[2] ) ;
//顯示發(fā)信人
Console.WriteLine ( "接收者:" + arrRet[3] ) ;
//顯示目的地址
Console.WriteLine ( "主題:" + arrRet[4] ) ;
//顯示郵件主題
Console.WriteLine ( "內(nèi)容:" + arrRet[5] ) ;
}
//顯示郵件內(nèi)容
//
// TODO: 在此處添加代碼以啟動(dòng)應(yīng)用程序
//
}
public static bool LoadPOP(string POPServer,string POPUser,string POPPsw)
{
string sPOPServer = POPServer;
string sPOPUser = POPUser;
string sPOPPass = POPPsw ;
try
{
tpServer = new TcpClient ( sPOPServer , 110 ) ;
//和POP3服務(wù)器的110端口號(hào)建立TCP連接
}
catch
{
Console.WriteLine ("無法和指定的POP3服務(wù)器建立連接!" ) ;
return false;
}
nsStream = tpServer.GetStream ( ) ;
//獲取客戶機(jī)和服務(wù)器會(huì)話的數(shù)據(jù)流
rdStream = new StreamReader ( tpServer.GetStream ( ) ) ;
sRec = rdStream.ReadLine ( ) ;
sData = "USER "+ sPOPUser + CRLF ;
//定義向POP3服務(wù)器傳送帳戶對(duì)應(yīng)的命令行
byData = System.Text.Encoding.Default.GetBytes ( sData.ToCharArray ( ) ) ;
nsStream.Write ( byData , 0 , byData.Length ) ;
//向POP3服務(wù)器傳送帳戶
sRec = rdStream.ReadLine ( ) ;
//接收POP3服務(wù)器反饋數(shù)據(jù)
Console.WriteLine ( "向POP3服務(wù)器傳送帳戶后,服務(wù)器返回的信息:" + sRec ) ;
string [ ] sUserString = sRec.Split ( " ".ToCharArray ( ) ) ;
if ( sUserString[ 0 ] == "-ERR" )
{
Console.WriteLine ( "該P(yáng)OP3服務(wù)器中沒有此帳戶!" ) ;
return false;
}
sData = "PASS " + sPOPPass + CRLF ;
//定義向POP3服務(wù)器傳送帳戶口令對(duì)應(yīng)的命令行
byData = System.Text.Encoding.Default.GetBytes ( sData.ToCharArray ( ) ) ;
nsStream.Write ( byData , 0 , byData.Length ) ;
//向POP3服務(wù)器傳送帳戶對(duì)應(yīng)口令
sRec = rdStream.ReadLine ( ) ;
//接收POP3服務(wù)器反饋數(shù)據(jù)
Console.WriteLine ( "向POP3服務(wù)器傳送帳戶口令后,服務(wù)器返回的信息:" + sRec ) ;
string[ ] sPassString = sRec.Split ( " ".ToCharArray ( ) ) ;
if ( sPassString[ 0 ] == "-ERR" )
{
Console.WriteLine ( "帳戶對(duì)應(yīng)的口令有誤!" ) ;
return false;
}
return true;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -