新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论.NET,C#,ASP,VB技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Dot NET,C#,ASP,VB 』 → 用C#做的邮件收发系统,但只能收数据流,请各位帮我做简体,繁体,数字的解码!!!!!!!!! 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 12168 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: 用C#做的邮件收发系统,但只能收数据流,请各位帮我做简体,繁体,数字的解码!!!!!!!!! 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     371146381 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:72
      门派:XML.ORG.CN
      注册:2007/12/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给371146381发送一个短消息 把371146381加入好友 查看371146381的个人资料 搜索371146381在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看371146381的博客楼主
    发贴心情 用C#做的邮件收发系统,但只能收数据流,请各位帮我做简体,繁体,数字的解码!!!!!!!!!

    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.richTextBox1 = new System.Windows.Forms.RichTextBox();
                this.groupBox3 = new System.Windows.Forms.GroupBox();
                this.richTextBox2 = new System.Windows.Forms.RichTextBox();
                this.receive = new System.Windows.Forms.Button();
                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;
                //
                // 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;
                //
                // password
                //
                this.password.Location = new System.Drawing.Point(306, 52);
                this.password.Name = "password";
                this.password.PasswordChar = '*';
                this.password.Size = new System.Drawing.Size(174, 21);
                this.password.TabIndex = 0;
                //
                // 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;
                //
                // 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 = "邮件名称";
                //
                // 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 = "";
                //
                // 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 = "邮件内容";
                //
                // 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 = "";
                //
                // 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);
                //
                // 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.groupBox1.PerformLayout();
                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)
            {
                if (this.servername.Text == "")
                {
                    MessageBox.Show("服务器不能为空,请重新输入!");
                    servername.Focus();
                    return;
                }
                if (this.mailport.Text != "110")
                {
                    MessageBox.Show("请输入默认的端口号子110");
                    mailport.Clear();
                    mailport.Focus();
                    return;
                }
                if (this.username.Text == "")
                {
                    MessageBox.Show("用户名不能为空,请重新输入!");
                    username.Focus();
                    return;
                }
                if (this.password.Text == "")
                {
                    MessageBox.Show("密码不能为空,请重新输入!");
                    password.Focus();
                    return;
                }
                int mailnumber;
       //连接服务器
       TcpClient tcpClient=new TcpClient();
       try
       {
                    //连接POP3服务器
        tcpClient.Connect(servername.Text,Int32.Parse (mailport.Text));
       }
       catch
       {
                    //显示错误信息
        MessageBox.Show ("无法连接到POP3服务器"+servername.Text+"的"+mailport.Text+"端口!");
                    servername.Clear();
                    password.Clear();
                    username.Clear();
                    servername.Focus();
                    return;
       }
       //从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("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("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("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("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("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("DELE "+number.ToString ()+"\r\n");
        WriteToNetStream(ref NetStream,"DELE "+number.ToString ());
        string returnMsg=ReadFromNetStream(ref NetStream);
        checkForError(returnMsg);
        richTextBox1.AppendText("POP3SERVER:"+returnMsg+"\r\n");
       }
      }
     }
    }


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/12/19 15:54:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Dot NET,C#,ASP,VB 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/16 1:43:49

    本主题贴数6,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  用C#做的邮件收发系统,但只能收数据流,请各位帮我做简体,繁体,数字的解码!!!!!!!!!..(14545字) - 371146381,2007年12月19日
        回复:  哎,可怜啊!!!(12字) - 371146381,2008年1月7日
        回复:  [color=#FF0000][size=4][size=4][B][U]怎么没人帮我啊,这样吧,..(19961字) - 371146381,2008年1月3日
        回复:  没人搞吗?C#高手呢?(18字) - 371146381,2007年12月19日
            回复:  只做过简单的发系统,没有收过。不做C#好多年,呵呵。(52字) - netjian,2007年12月19日
                回复:  感谢!!(53字) - 371146381,2007年12月20日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    110.352ms