📄 class1.cs
字号:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace 利用POP3协议收取电子邮件
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
private static TcpClient tpServer ;
private static byte[] byData ;
//设定一个字节数组,用以存放向POP3服务器传送的命令
private static string CRLF = "\r\n" ;
//定义回车换行符
private static string sRec ;
//定义一个字符串,用以存放从POP3服务器反馈数据
private static string sData ;
//定义一个字符串,用以存放向POP3服务器传送的命令字符串
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 ;
//定义获取帐户中邮件数目和占用空间的命令
byData = System.Text.Encoding.Default.GetBytes ( sData.ToCharArray ( ) ) ;
nsStream.Write ( byData , 0 , byData.Length ) ;
//向POP3服务器传送获取帐户中邮件数目和占用空间的命令
sRec = rdStream.ReadLine();
//接收服务器反馈的数据
/*
以下代码是收取帐户中的第一封邮件,并提取数据
*/
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 ( "发送时间:" + arrRet[1] ) ;
//显示邮件发送时间信息
Console.WriteLine ( "发送者:" + arrRet[2] ) ;
//显示发信人
Console.WriteLine ( "接收者:" + arrRet[3] ) ;
//显示目的地址
Console.WriteLine ( "主题:" + arrRet[4] ) ;
//显示邮件主题
Console.WriteLine ( "内容:" + arrRet[5] ) ;
}
//显示邮件内容
//
// TODO: 在此处添加代码以启动应用程序
//
}
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服务器的110端口号建立TCP连接
}
catch
{
Console.WriteLine ("无法和指定的POP3服务器建立连接!" ) ;
return false;
}
nsStream = tpServer.GetStream ( ) ;
//获取客户机和服务器会话的数据流
rdStream = new StreamReader ( tpServer.GetStream ( ) ) ;
sRec = rdStream.ReadLine ( ) ;
sData = "USER "+ sPOPUser + CRLF ;
//定义向POP3服务器传送帐户对应的命令行
byData = System.Text.Encoding.Default.GetBytes ( sData.ToCharArray ( ) ) ;
nsStream.Write ( byData , 0 , byData.Length ) ;
//向POP3服务器传送帐户
sRec = rdStream.ReadLine ( ) ;
//接收POP3服务器反馈数据
Console.WriteLine ( "向POP3服务器传送帐户后,服务器返回的信息:" + sRec ) ;
string [ ] sUserString = sRec.Split ( " ".ToCharArray ( ) ) ;
if ( sUserString[ 0 ] == "-ERR" )
{
Console.WriteLine ( "该POP3服务器中没有此帐户!" ) ;
return false;
}
sData = "PASS " + sPOPPass + CRLF ;
//定义向POP3服务器传送帐户口令对应的命令行
byData = System.Text.Encoding.Default.GetBytes ( sData.ToCharArray ( ) ) ;
nsStream.Write ( byData , 0 , byData.Length ) ;
//向POP3服务器传送帐户对应口令
sRec = rdStream.ReadLine ( ) ;
//接收POP3服务器反馈数据
Console.WriteLine ( "向POP3服务器传送帐户口令后,服务器返回的信息:" + sRec ) ;
string[ ] sPassString = sRec.Split ( " ".ToCharArray ( ) ) ;
if ( sPassString[ 0 ] == "-ERR" )
{
Console.WriteLine ( "帐户对应的口令有误!" ) ;
return false;
}
return true;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -