⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form3.cs

📁 C#写的Email邮件客户端程序skyemail.
💻 CS
📖 第 1 页 / 共 4 页
字号:
						q2=msgconbody.IndexOf(list,q1+list.Length);
						
						if(q2!=-1)
						{
							string msgconbody1=msgconbody.Substring(q1+list.Length,q2-q1-list.Length-1).Trim();    
							
							if(msgconbody1.IndexOf("text/plain")!=-1)//这是取出的正文部分
							{
								int q3=msgconbody1.IndexOf(CRLF+CRLF);
								string msgconbody2=msgconbody1.Substring(q3,msgconbody1.Length-q3-1).Trim();
								string msgconbody3=msgconbody1.Substring(0,q3).Trim();
								string[] head=msgconbody3.Split(new char[] {'\n'});
								string charsty="";
								string sty="";
								if(head.Length==3)
								{
									q3=head[0].IndexOf(":");
									sty=head[0].Substring(q3+1,head[0].Length-q3-2).Trim();  
									q3=head[1].IndexOf("=");
									charsty=head[1].Substring(q3+2,head[1].Length-q3-3).Trim();  
									q3=head[2].IndexOf(":");
									Mtype=head[2].Substring(q3+1,head[2].Length-q3-1).Trim();  
								}
								else
								{
									q3=head[0].IndexOf(":");
									int q4=head[0].IndexOf(";");
									sty=head[0].Substring(q3+1,q4-q3-1).Trim();  //媒体类型
									int q5=head[0].IndexOf("=");
									charsty=head[0].Substring(q5+1,head[0].Length-q5-1).Trim(); //获取的是字符集 
									q3=head[1].IndexOf(":");
									Mtype=head[1].Substring(q3+1,head[1].Length-q3-1).Trim();  //获取编码的方式
								}
								switch(Mtype)
								{
									case "base64":
										textBox1.Text=Base64Decode(msgconbody2);
										break;
									case "quoted-printable":
										textBox1.Text=QDecode(msgconbody);
										break;
									case "8bit":
										break;
								}
							}
							if(msgconbody1.IndexOf("filename")!=-1 ||msgconbody1.IndexOf("name")!=-1)//这是取出的附件部分
							{
							
								int q3=msgconbody1.IndexOf(CRLF+CRLF);
								string msgconbody2=msgconbody1.Substring(q3,msgconbody1.Length-q3).Trim();
								string msgconbody3=msgconbody1.Substring(0,q3).Trim();
								string[] head=msgconbody3.Split(new char[] {'\n'});
								string attfilename="";
								q3=head[2].IndexOf("=");
								attfilename=head[2].Substring(q3+2,head[2].Length-q3-3).Trim();  
								q3=head[1].IndexOf(":");
								Mtype=head[1].Substring(q3+1,head[1].Length-q3-1).Trim();  
								switch(Mtype)
								{
									case "base64":
										//对附件和附件内容进行解码
										//附件名称
										string[] m1=attfilename.Split(new char[] {'?'});
										attfilename=m1[3];
										string type=m1[2];
										if(type.IndexOf("B")!=-1)
											attfilename=this.Base64Decode(attfilename); 
										if(type.IndexOf("Q")!=-1)
											attfilename=this.QDecode(attfilename); 
										attfilename=attfilename.Remove(0,1);
										listView2.Items.Add (attfilename);
										

										//附件内容,创建临时文件
										msgconbody2=msgconbody2.Substring(0,msgconbody2.LastIndexOf("=="));  
										byte[] binaryData;
										string tempPath = Path.GetTempPath();//获取临时目录的路径,将附件写入临时目录
										binaryData=Convert.FromBase64String(msgconbody2);
										System.IO.FileStream outFile;
										outFile = new System.IO.FileStream(tempPath+attfilename,System.IO.FileMode.Create,System.IO.FileAccess.Write);
										outFile.Write(binaryData, 0, binaryData.Length);
										outFile.Close();
										break;
									case "quoted-printable":
										textBox1.Text=QDecode(msgconbody);
										break;
									case "8bit":
										break;
								}
							
							}
							msgconbody=msgconbody.Remove(0,q2); 
//							int d=1;
						}
						else
						{
							end=false;
						}

						
					}
					
				}
			}
			else
			{
				MessageBox.Show("您帐号的邮件数据可能丢失!");
			}
		}
		private string Base64Decode(string bases)///base64编码的解码
		{
			byte[] barray;
			if(bases.Length >0)
			{
				barray=Convert.FromBase64String(bases);
				return (Encoding.Default.GetString(barray));
			}
			else
			{
				return(bases);//如果主题的内容为空的时候
			}
		}
		private string Base64Encode(string estr)
		{
			byte[] barray;
			barray=Encoding.Default.GetBytes(estr);
			return Convert.ToBase64String(barray);
		}

		private string QDecode(string bases)///Q编码的解码
		{
			
			return("ok");
		}
		
		private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
		{
			switch (toolBar1.Buttons.IndexOf(e.Button))
			{
				case 0 :
					//MessageBox.Show("收邮件");
					Form2 dd =new Form2();
					dd.ShowDialog(); 
					DispAll("main.wg");
					treeView1.Focus();
					TreeNode treed=new TreeNode("收件箱"); 
					treeView1.SelectedNode=treed;
					 break;
				case 1 :
					MessageBox.Show("发送邮件");
					break;
				case 2 :
					Form4 ss=new Form4(); 
					ss.Show(); 
					break;
				case 3 :
					MessageBox.Show("回复邮件");
					break;
				case 4 :
					MessageBox.Show("转发邮件");
					break;
				case 5 :
					Form5 d=new Form5();
					d.Show();
					//d.Dispose(); 
					break;
				case 6 :
//					Form1 cc =new Form1();
//					cc.Show();
//					cc.Dispose(); 
					FrmConf cc =new FrmConf(); 
					cc.Show();
					//cc.Dispose(); 
					break;
				case 7 :
					//MessageBox.Show("帮助信息");
					Form9 f=new Form9();
					f.ShowDialog(); 
					break;
				
			}
 
		}

		private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
		{
			//Form载入之后首先执行此代码触发邮件列表显示代码
			string  f=e.Node.Text; 
			string temp="";
			if(!f.Equals("本地文件夹"))
			{
				string con=e.Node.Parent.Text +(char)92+f;
				string[] f1=con.Trim().Split((char)92);  
				string parstr=f1[0];
				string childstr=f1[1];
				for(int i=0;i<treeView1.Nodes.Count;i++)
				{
					if(treeView1.Nodes[i].Text.Equals(parstr))  //如果第一层就已经找到了父节点,则判断有没有重名的文件夹
					{
						for(int r=0;r<treeView1.Nodes[i].Nodes.Count;r++)
						{
							if(treeView1.Nodes[i].Nodes[r].Text.Equals(childstr))
							{
								temp=childstr.Trim() + "0"+".wg";
								break;
							}
						}
							
						
					}
					for(int j=0;j<treeView1.Nodes[i].Nodes.Count;j++)
					{
						if(treeView1.Nodes[i].Nodes[j].Text.Equals(parstr))  
						{
							for(int r=0;r<treeView1.Nodes[i].Nodes[j].Nodes.Count;r++)
							{
								if(treeView1.Nodes[i].Nodes[j].Nodes[r].Text.Equals(childstr))
								{
									temp=childstr.Trim() + "1"+".wg";
								}
							}
						}
					}
					
						
				}
				switch (f) 
				{
					case "收件箱":
						temp="main.wg";
						break;
					case "发件箱":
						temp="out.wg";
						break;
					case "已发送邮件":
						temp="sent.wg";
						break;
					case "垃圾箱":
						temp="trash.wg";
						break;
				}
				if(temp.Length>1)
				{
					DispAll(temp); 
				}
				else
				{
					textBox1.Text="";
					listView1.Items.Clear(); 
					listView2.Items.Clear(); 
					MessageBox.Show ("no");
				}
			}
		}

		private void menuItem18_Click(object sender, System.EventArgs e)
		{
			this.Close();//退出程序 
		}

		private void menuItem14_Click(object sender, System.EventArgs e)
		{
			this.Focus();   
		}

		private void menuItem15_Click(object sender, System.EventArgs e)
		{
//			Form1 dd = new Form1();
//			dd.EmailCheck();
//			dd.Close();
			DispAll("main.wg");
		}

		private void menuItem16_Click(object sender, System.EventArgs e)
		{
//			Form1 dd = new Form1();
//			dd.Activate(); 
		}

		private void listView1_ColumnClick(object sender,System.Windows.Forms.ColumnClickEventArgs e)
		{
	
			
			ListViewSorter sorter=new ListViewSorter();
			sorter.Column=0;     // Sort first column
			Cfirst=e.Column; 
			if(Cb)
			{
				Ctwo=Cfirst;
				Cb=false;
			}
			else
			{
				Cb=true;
			}
			if(Ctwo==Cfirst)
			{
				if(Cb)
				{
					sorter.Sorting=SortOrder.Ascending; 
				}
				else
				{
					sorter.Sorting=SortOrder.Descending; 
				}
			}
			sorter.Columns.Count=5;    // Number of columns in the listview
			sorter.Columns[0].SortType=SortTypes.SortText; // 是否阅读
			sorter.Columns[1].SortType=SortTypes.SortText; //发件人
			sorter.Columns[2].SortType=SortTypes.SortText; // 主题
			sorter.Columns[3].SortType=SortTypes.SortDate; // 日期
			sorter.Columns[4].SortType=SortTypes.SortNumeric ; // 大小
			listView1.ListViewItemSorter=sorter; 

			if (sorter.Column==e.Column)
				sorter.SwitchSortOrder();
			// Set column to sort
			sorter.Column=e.Column;
			// Perform sort
			listView1.Sort();
			

	
		}

		private void menuItem9_Click(object sender, System.EventArgs e)//邮件删除功能
		{
			int i;
			StreamReader sr =new StreamReader(@filename,Encoding.GetEncoding("gb2312")) ;
			bool error =false;
			int j=0;
			string temp="";
			string deltemp="";
			while(!error) 
			{	
				string szTemp="";
				while(szTemp!=".")
				{
					szTemp = sr.ReadLine();
					if( szTemp==null) 
					{szTemp="";error=true;break; }
					else
					{
						bool wf=true;
						for(i=0;i<listView1.SelectedItems.Count;i++)
						{
								
							if(j==(int)listView1.SelectedItems[i].Tag)
							{
								wf=false;

							}
						}
						if(wf)
						{
									
							temp += szTemp+CRLF;
						}
						else
						{
							deltemp+= szTemp+CRLF;
							//将删除的邮件写入一删除邮件中
						}
							
					}
				}
				j=j+1;
			}
			sr.Close();  
			StreamWriter sw =new StreamWriter(@filename,false,Encoding.GetEncoding("gb2312")) ;
			sw.Write(temp);
			sw.Close(); 
			if(filename.IndexOf("trash.wg")==-1)
			{
				sw =new StreamWriter(@"trash.wg",false,Encoding.GetEncoding("gb2312")) ;
				sw.Write(deltemp);
				sw.Close(); 
			}

			DispAll(filename); 
				
		}

		private void listView1_Click(object sender, System.EventArgs e)
		{
		}

		private void menuItem1_Click(object sender, System.EventArgs e)
		{
			Form4 d=new Form4();
			d.Show();
		}

		private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			int d=-1;
			if(listView1.SelectedItems.Count>0)
			{
				int g=listView1.SelectedItems.Count-1; 
				d=(int)listView1.SelectedItems[g].Index;
				if(d!=-1)
				{
					textBox1.Text="";
					listView2.Items.Clear(); 
					this.Bodydisp(d);
					if(listView1.SelectedItems[0].SubItems[0].Text.IndexOf("新")!=-1)
					{
						timer1.Interval=1000;
						timer1.Start();
					}																
				}
			}
			
		}
		//对需要调用的dll进行导入
		[DllImport("shell32.dll")]
		//声明函数结构
		//原型的数据类型要进行更改
		private static extern int ShellExecute(int d, string ff, string fg, string gf, string hh, int y);

		private void 打开附件_Click(object sender, System.EventArgs e)
		{
			
			string filepath=Path.GetTempPath()+listView2.SelectedItems[0].Text; 
			int f=ShellExecute(0,"open",filepath,"","",1);
			//("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
		
		}

		private void menuItem19_Click(object sender, System.EventArgs e)
		{
			if(listView2.SelectedItems.Count >0 )
			{
				
				saveFileDialog1.FileName =listView2.SelectedItems[0].Text;
				saveFileDialog1.Filter="所有文件 (*.*)|*.*" ;
				if(saveFileDialog1.ShowDialog() == DialogResult.OK)
				{
					string filepath=Path.GetTempPath()+listView2.SelectedItems[0].Text; 
					File.Copy(filepath,saveFileDialog1.FileName); 
					
				}
				
			}
						
		}

		private void timer1_Tick(object sender, System.EventArgs e)
		{
			IntTimer=IntTimer+1;
			if(IntTimer==5)
			{
				int g=listView1.SelectedItems.Count-1; 
				int d=(int)listView1.SelectedItems[g].Index; 
				if(g!=-1)
				{	
					string f=listView1.Items[d].Font.FontFamily.Name;  
					float f1=listView1.Items[d].Font.Size; 
					listView1.Items[d].Font= new Font(f,f1);
					this.ChangeSta(filename,"新"); //修改文件中的阅读状态
					listView1.Items[d].SubItems[0].Text="旧";  
					
				}
				else
				{
				}	timer1.Stop();
			}
		}

		private void ChangeSta(string fname,string fstr)
		{
			timer1.Stop();
			IntTimer=0;
//			int i;
			StreamReader sr =new StreamReader(@fname,Encoding.GetEncoding("gb2312")) ;
			bool error =false;
			int j=0;
			string temp="";
//			string deltemp="";
			if(fstr.IndexOf("新")!=-1)
			{
				fstr="R";
			}
			else
			{
				fstr="U";
			}
			while(!error) 
			{	
				string szTemp="";
				while(szTemp!=".")
				{
					szTemp = sr.ReadLine();
					if( szTemp==null) 
					{
						szTemp="";
						error=true;
						break;
					}
					else
					{
				
						int g=listView1.SelectedItems.Count-1; 
						if(j==(int)listView1.SelectedItems[g].Tag)
						{
							int s=szTemp.IndexOf("Status");
							if(s!=-1)
								szTemp="Status:"+fstr;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -