前一段时间在论坛上看见有人问如何使用.net进行POP3编程,其实POP3的使用很简单,所以.net没有向SMTP那样给出相应的类来控制.

  
  废话少说,程序员最需要的使代码.
  
  1.打开VS.NET 2003.
  
  2.新建一个WinForm Application.

文章转载自网管之家:http://www.bitscn.com/os/windows/200604/1954.html

3.添加命名空间
  
  using System;
  using System.Drawing;
  using System.Collections;
  using System.ComponentModel;
  using System.Windows.Forms;
  using System.Data;
  using System.Net;
  using System.Net.Sockets;
  using System.Text;
  using System.IO;
  
  4.主要代码
  
  为了防止界面在连接服务器时死锁,我另开了一个线程
  
  private void button1_Click(object sender, System.EventArgs
e)
  {
  Thread myThread=new Thread(new ThreadStart(TreadGet));
  myThread.Start();
  }
  
  private void TreadGet()
  {
  ConnectToServer();
  LogonServer();
  GetEmailList();
  }
  
  //连接服务器
  private void ConnectToServer()
  {
  this.myClient=new TcpClient();
  try
  {
  this.myClient.Connect(this.serverNameTextBox.Text,110);
  this.messageListBox.Items.Add("连接服务器成功");
  //初始化网络流,数据就是通过这个对象读出来的
  ns=this.myClient.GetStream();
  sr=new StreamReader(ns);
  sw=new StreamWriter(ns);
  }
  catch(Exception ex)
  {
  this.messageListBox.Items.Add(ex.Message);
  }
  }
  //验证用户名,密码
  private void LogonServer()
  {
  result=sr.ReadLine();
  this.messageListBox.Items.Add(result);
  sw.WriteLine("USER "+this.nameTextBox.Text);
  sw.Flush();
  
  result=sr.ReadLine();
  if(result.Substring(0,3)=="-ER")
  {
  this.messageListBox.Items.Add("没有这个用户名");
  return;
  }
  
  sw.WriteLine("PASS "+this.passTextBox.Text);
  sw.Flush();
  
  try
  {
  result=sr.ReadLine();
  }
  catch(IOException ioex)
  {
  this.messageListBox.Items.Add(ioex.Message);
  return;
  }
  
  if(result.Substring(0,4)=="-ERR")
  {
  this.messageListBox.Items.Add("无法登录,可能使用户名密码错误!");
  return;
  }
  
  this.messageListBox.Items.Add("登录成功");
  
  }
  
  //获取邮件列表
  private void GetEmailList()
  {
  string from=null;
  string subject=null;
  sw.WriteLine("stat");
  sw.Flush();
  
  result=sr.ReadLine();
  // MessageBox.Show(result);
  string[] nummessage=result.Split(' ');
  int  totalnum=Convert.ToInt32(nummessage[1]);
  if(totalnum>0)
  this.messageListBox.Items.Add("你有"+totalnum.ToString()+"邮件");

  else
  this.messageListBox.Items.Add("邮箱里没有邮件");
  
  for(int i=1;i<=totalnum;i++)
  {
  sw.WriteLine("top "+i.ToString()+" 0");
  sw.Flush();
  result=sr.ReadLine();
  
  while(true)
  {
  result=sr.ReadLine();
  if(result==".")
  break;
  if(result.Length>4)
  {
  if(result.Substring(0,5)=="From:")
  from=result ;
  if(result.Substring(0,8)=="Subject:")
  subject=result ;
  
  }
  }
  
  this.listBox1 .Items.Add(i.ToString()+"  "+from+ " "+
subject);
  
  }
  }
  
  private void button2_Click(object sender, System.EventArgs
e)
  {
  this.listBox1.Items.Clear();
  }
  
  参考资料
  网络邮件收取使用的是Pop3协议,了解Pop3协议有助于我们加深对邮件系统的理解。而且使用Pop3协议你还可以直接telnet
到邮件服务器上去收信。
  
  一般telnet Pop3 Server 110后就可以用这些命令了,大小写不敏感,
不包括口令本身,注意不要让口令回显,等验证通过后再允许回显好了。
  
  user username 用户认可
  
  pass password 认可 执行成功则状态转换
  
  apop name,digest 认可一种安全传输口令的办法,执行成功导致状态转换,请参见RFC 1321 。
  
  stat 处理请求server回送邮箱统计资料,如邮件数、 邮件总字节数
  
  uidl n 处理 server返回用于该指定邮件的唯一标识, 如果没有指定,返回所有的。
  
  list n 处理 server返回指定邮件的大小等
  
  retr n 处理 server返回邮件的全部文本
  
  dele n 处理 server标记删除,quit命令执行时才真正删除
  
  rset 处理撤消所有的dele命令
  
  top n,m 处理 返回n号邮件的前m行内容,m必须是自然数
  
  noop 处理 server返回一个肯定的响应
  
  quit client 希望结束会话。如果server处于"处理"
状态,则现在进入"更新"状态,删除那些标记成删除的邮件。如果server处于"认可"状态, 则结束会话时server不进入"更新"状态

  
  使用telnet 的一个完整的收信例子如下:
  
  telnet pop3Server 110
  user username
  pass ****
  stat
  list
  retr 1
  retr 2
  ...
  dele 1
  dele 2
  ...
  quit

文章转载自网管之家:http://www.bitscn.com/os/windows/200604/1954.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

.NET&nbsp;下的&nbsp;POP3&nbsp;编程代码共享的更多相关文章

  1. ASP.NET MVC下的四种验证编程方式[续篇]

    在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注Validation ...

  2. ASP.NET MVC下的四种验证编程方式

    ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效性,我们将针对参数的验证成为Model绑定 ...

  3. .NET跨平台之mac 下vs code 多层架构编程

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入,申请备注填写姓名+技术+工作年限) Q  Q:408365330     E-Mail:eg ...

  4. ASP.NET MVC下的四种验证编程方式[续篇]【转】

    在<ASP.NET MVC下的四种验证编程方式> 一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式(“手工验证”.“标注ValidationAttribute特性”.“ ...

  5. ASP.NET MVC下的四种验证编程方式【转】

    ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效 性,我们将针对参数的验证成为Model绑 ...

  6. linux下C语言socket网络编程简例

    原创文章,转载请注明转载字样和出处,谢谢! 这里给出在linux下的简单socket网络编程的实例,使用tcp协议进行通信,服务端进行监听,在收到client的连接后,发送数据给client:clie ...

  7. Windows下C语言的Socket编程例子(TCP和UDP)

    原文:Windows下C语言的Socket编程例子(TCP和UDP) 刚刚学windows编程,所以想写学习笔记,这是一个简单的Socket程序例子,开发环境是vc6: 首先是TCP server端: ...

  8. [转]VS 2012环境下使用MFC进行OpenGL编程

    我就不黏贴复制了,直接给出原文链接:VS 2012环境下使用MFC进行OpenGL编程 其它好文链接: 1.OpenGL系列教程之十二:OpenGL Windows图形界面应用程序

  9. 5.3linux下C语言socket网络编程简例

    原创文章,转载请注明转载字样和出处,谢谢! 这里给出在Linux下的简单socket网络编程的实例,使用tcp协议进行通信,服务端进行监听,在收到客户端的连接后,发送数据给客户端:客户端在接受到数据后 ...

随机推荐

  1. OpenStack 使用Ceph 配置指导

    概述 Ceph 作为分布式文件系统,不但具有高可靠性.高扩展性.高性能. 也是统一存储系统.支持对象存储.块存储.文件存储,本文介绍怎样使用Ceph 块存储作为OpenStack的Glance.Nov ...

  2. SQL语句备份和还原数据库(转)

    1,使用SQL最简单备份,还原数据库 1 /* 备份 */ 2 backup database Test to disk='D:/Test.bak' 3 /* 还原 */ 4 restore data ...

  3. Error: Failed to fetch plugin E:_My_File______workMyCodemyCodecordova-workspaceplugman-testMyMath via registry. Probably this is either a connection problem, or plugin spec is incorrect.

    $ cordova plugin add E:\_My_File_____\_work\MyCode\myCode\cordova-workspace\plugman-test\MyMath --sa ...

  4. git版本控制-- Windows+Git+TortoiseGit+COPSSH安装图文教程

    Windows+Git+TortoiseGit+COPSSH 安装图文教程 教程网址: http://www.liaoxuefeng.com/wiki/0013739516305929606dd183 ...

  5. Ubuntu PPPoE拨号上网指定网卡

    Just follow these steps: Check that the ethernet cable is properly connected Open Terminal Run sudo ...

  6. 剑指Offer:删除链表的节点【18】

    剑指Offer:删除链表的节点[18] 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3-& ...

  7. HTML5/CSS3简易版俄罗斯方块游戏

    在线演示 本地下载

  8. koa-bodyparser返回413状态码的问题

    413 Request Entity Too Large(请求实体太大) 数日前,我用 node.js 写的一个日志服务抛出了这个状态码-- 自己写的服务抛出了一个自己都不认识的状态码,这是最气的!( ...

  9. LightOJ - 1151 Snakes and Ladders —— 期望、高斯消元法

    题目链接:https://vjudge.net/problem/LightOJ-1151 1151 - Snakes and Ladders    PDF (English) Statistics F ...

  10. Centos7 安装lnmp

    Centos7 安装lnmp 1.下载 wget http://soft.vpser.net/lnmp/lnmp1.5-full.tar.gz 2.解压 tar -zvxf lnmp1.5-full. ...