?? form1.cs
字號:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net ;
using System.IO;
using System.Net.Sockets ;
using System.Text ;
namespace MailPOP3
{
/// <summary>
/// Form1 的摘要說明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.TextBox servername;
private System.Windows.Forms.TextBox mailport;
private System.Windows.Forms.TextBox password;
private System.Windows.Forms.TextBox username;
private System.Windows.Forms.Button receive;
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.RichTextBox richTextBox2;
/// <summary>
/// 必需的設計器變量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗體設計器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 調用后添加任何構造函數代碼
//
}
/// <summary>
/// 清理所有正在使用的資源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗體設計器生成的代碼
/// <summary>
/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
/// </summary>
private void InitializeComponent()
{
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label1 = new System.Windows.Forms.Label();
this.servername = new System.Windows.Forms.TextBox();
this.mailport = new System.Windows.Forms.TextBox();
this.password = new System.Windows.Forms.TextBox();
this.username = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.receive = new System.Windows.Forms.Button();
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.richTextBox2 = new System.Windows.Forms.RichTextBox();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.SuspendLayout();
//
// groupBox1
//
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.servername);
this.groupBox1.Controls.Add(this.mailport);
this.groupBox1.Controls.Add(this.password);
this.groupBox1.Controls.Add(this.username);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Location = new System.Drawing.Point(4, 4);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(490, 82);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "接收郵件服務器設置";
//
// label1
//
this.label1.Location = new System.Drawing.Point(10, 26);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(64, 16);
this.label1.TabIndex = 1;
this.label1.Text = "服務器名:";
//
// servername
//
this.servername.Location = new System.Drawing.Point(76, 22);
this.servername.Name = "servername";
this.servername.Size = new System.Drawing.Size(174, 21);
this.servername.TabIndex = 0;
this.servername.Text = "";
//
// mailport
//
this.mailport.Location = new System.Drawing.Point(76, 52);
this.mailport.Name = "mailport";
this.mailport.Size = new System.Drawing.Size(174, 21);
this.mailport.TabIndex = 0;
this.mailport.Text = "";
//
// password
//
this.password.Location = new System.Drawing.Point(306, 52);
this.password.Name = "password";
this.password.Size = new System.Drawing.Size(174, 21);
this.password.TabIndex = 0;
this.password.Text = "";
//
// username
//
this.username.Location = new System.Drawing.Point(306, 22);
this.username.Name = "username";
this.username.Size = new System.Drawing.Size(174, 21);
this.username.TabIndex = 0;
this.username.Text = "";
//
// label2
//
this.label2.Location = new System.Drawing.Point(38, 56);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(36, 14);
this.label2.TabIndex = 1;
this.label2.Text = "端口:";
//
// label3
//
this.label3.Location = new System.Drawing.Point(260, 26);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(48, 14);
this.label3.TabIndex = 1;
this.label3.Text = "用戶名:";
//
// label4
//
this.label4.Location = new System.Drawing.Point(272, 56);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(36, 16);
this.label4.TabIndex = 1;
this.label4.Text = "密碼:";
//
// groupBox2
//
this.groupBox2.Controls.Add(this.richTextBox1);
this.groupBox2.Location = new System.Drawing.Point(4, 90);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(562, 100);
this.groupBox2.TabIndex = 2;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "郵件名稱";
//
// groupBox3
//
this.groupBox3.Controls.Add(this.richTextBox2);
this.groupBox3.Location = new System.Drawing.Point(2, 194);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(564, 224);
this.groupBox3.TabIndex = 3;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "郵件內容";
//
// receive
//
this.receive.Location = new System.Drawing.Point(498, 30);
this.receive.Name = "receive";
this.receive.Size = new System.Drawing.Size(64, 23);
this.receive.TabIndex = 4;
this.receive.Text = "接收郵件";
this.receive.Click += new System.EventHandler(this.receive_Click);
//
// richTextBox1
//
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.richTextBox1.Location = new System.Drawing.Point(3, 17);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(556, 80);
this.richTextBox1.TabIndex = 1;
this.richTextBox1.Text = "";
//
// richTextBox2
//
this.richTextBox2.Dock = System.Windows.Forms.DockStyle.Fill;
this.richTextBox2.Location = new System.Drawing.Point(3, 17);
this.richTextBox2.Name = "richTextBox2";
this.richTextBox2.Size = new System.Drawing.Size(558, 204);
this.richTextBox2.TabIndex = 0;
this.richTextBox2.Text = "";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(568, 424);
this.Controls.Add(this.receive);
this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.MaximizeBox = false;
this.Name = "Form1";
this.Text = "郵件接收";
this.groupBox1.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 應用程序的主入口點。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void receive_Click(object sender, System.EventArgs e)
{
int mailnumber;
//連接服務器
TcpClient tcpClient=new TcpClient();
try
{
//連接POP3服務器
tcpClient.Connect(servername.Text,Int32.Parse (mailport.Text));
}
catch
{
//顯示錯誤信息
MessageBox.Show ("無法連接到POP3服務器"+servername.Text+"的"+mailport.Text+"端口!");
}
//從POP3郵件服務器取得回復
NetworkStream netStream=tcpClient.GetStream ();
if (netStream==null)
{
throw new Exception ("無法取得回復");
}
string returnMsg=ReadFromNetStream(ref netStream);
checkForError(returnMsg);
richTextBox1.AppendText("連接應答:"+returnMsg+"\r\n");
//發送用戶名信息
richTextBox1.AppendText("C:USER "+this.username.Text+"\r\n");
WriteToNetStream(ref netStream,"USER "+this.username.Text);
returnMsg=ReadFromNetStream(ref netStream);
checkForError(returnMsg);
richTextBox1.AppendText("POP3SERVER:"+returnMsg+"\r\n");
//發送用戶密碼信息
richTextBox1.AppendText("C:PASSWORD "+this.password.Text+"\r\n");
WriteToNetStream(ref netStream,"PASS "+this.password .Text);
returnMsg=ReadFromNetStream(ref netStream);
checkForError(returnMsg);
richTextBox1.AppendText("POP3SERVER:"+returnMsg+"\r\n");
//檢查郵件
mailnumber=EmailCheck(ref netStream);
richTextBox1.AppendText("郵件數:"+mailnumber+" \r\n");
//接收郵件
for (int i=1;i<=mailnumber;i++)
{
richTextBox1.AppendText("C:RETR "+i.ToString() +" \r\n");
WriteToNetStream(ref netStream,"RETR "+i.ToString());
returnMsg=ReadFromNetStream(ref netStream);
checkForError(returnMsg);
richTextBox1.AppendText("POP3SERVER:"+returnMsg+"\r\n");
ReadMail(ref netStream,i);
}
//斷開與POP3服務器的連接
richTextBox1.AppendText("C:QUIT \r\n");
WriteToNetStream(ref netStream,"QUIT ");
returnMsg=ReadFromNetStream(ref netStream);
checkForError(returnMsg);
richTextBox1.AppendText("POP3SERVER:"+returnMsg+"\r\n");
}
//郵件檢查
private int EmailCheck(ref NetworkStream NetStream)
{
richTextBox1.AppendText("C:STAT \r\n");
WriteToNetStream(ref NetStream,"STAT");
string returnMsg=ReadFromNetStream(ref NetStream);
checkForError(returnMsg);
richTextBox1.AppendText("POP3SERVER:"+returnMsg+"\r\n");
string[] TotalStat=returnMsg.Split (new char[] {' '});
int mailNumber=Int32.Parse (TotalStat[1]);
return mailNumber;
}
//向POP3服務器寫入命令
private void WriteToNetStream(ref NetworkStream NetStream,string Command)
{
string stringToSend=Command+"\r\n";
Byte[] arrayToSend=Encoding.ASCII.GetBytes(stringToSend.ToCharArray());
NetStream.Write(arrayToSend,0,arrayToSend.Length );
}
//從POP3讀取數據
private string ReadFromNetStream(ref NetworkStream NetStream)
{
StringBuilder strReceived=new StringBuilder();
StreamReader sr=new StreamReader (NetStream);
String strLine=sr.ReadLine ();
while(strLine==null || strLine.Length ==0)
{
strLine=sr.ReadLine ();
}
strReceived.Append(strLine);
if (sr.Peek ()!=-1)
{
while((strLine=sr.ReadLine ())!=null)
{
strReceived.Append(strLine);
}
}
return strReceived.ToString();
}
//檢查流中是否含有錯誤
private void checkForError(String strMessage)
{
if (strMessage.IndexOf ("+OK")==-1)
throw new Exception ("收到來自POP3服務器的錯誤信息:"+strMessage);
}
//讀郵件
private void ReadMail(ref NetworkStream NetStream,int number)
{
int k=0;
bool check=false;
byte[] bb=new byte [6400];
while(!check)
{
k=NetStream.Read (bb,0,bb.Length );
string read=System.Text .Encoding .UTF8.GetString (bb,0,k);
int x=read.IndexOf ("\r\n.\r\n");
if (x!=-1)
{
check=true;
}
richTextBox2.AppendText (read);
richTextBox1.AppendText("C:DELE "+number.ToString ()+"\r\n");
WriteToNetStream(ref NetStream,"DELE "+number.ToString ());
string returnMsg=ReadFromNetStream(ref NetStream);
checkForError(returnMsg);
richTextBox1.AppendText("POP3SERVER:"+returnMsg+"\r\n");
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -