如何使用C#访问POP3服务器(转)

访问|服务器

//希望通过这篇文章,你可以用C#写出自己的Email客户端程序

This is a follow up to my SMTP example that shows how to access your POP3 server. This program connects and logs on to your POP3 server, and checks to see how many new messages you have.

The instantiation of the POP is in Main() like this:
POP pop = new POP("pop-server", "loginname", "password"); You must replace "pop-server" with the name of your POP server, "loginname" with your own log in, and "password" with your password. The class has two methods. The Connect method takes care of actually logging in to the server. The TCPClient class is used to establish the connection. The "user" and "pass" commands are used to login. Connect returns a NetworkStream object created during the connection process. The second method is GetNumberOfNewMessages, which returns the number of unread messages on the server. The response to the "stat" command is parsed to extract the number of new messages.

Requirement:

Requires .NET SDK

How To Compile?

csc /r:System.Net.dll /r:System.IO.dll pop.cs  

Source Code

using System.Net.Sockets;
using System.IO;
using System.Net;
using System;

class POP
{
string POPServer;
string user;
string pwd;
public POP(){}
public POP(string server, string _user, string _pwd)
{
POPServer = server;
user = _user;
pwd = _pwd;
}
private NetworkStream Connect()
{
TCPClient sender = new TCPClient(POPServer,110);
Byte[] outbytes;
string input;
NetworkStream ns = null;
try{
ns = sender.GetStream();
StreamReader sr = new StreamReader(ns);
Console.WriteLine(sr.ReadLine() );

input = "user " + user + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length) ;
Console.WriteLine(sr.ReadLine() );

input = "pass " + pwd + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length) ;
Console.WriteLine(sr.ReadLine() );

return ns;
}
catch(InvalidOperationException ioe){
Console.WriteLine("Could not connect to mail server");
return ns;
}
}
public int GetNumberOfNewMessages()
{
Byte[] outbytes;
string input;
try{
NetworkStream ns = Connect();
StreamReader sr = new StreamReader(ns);

input = "stat" + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length);
string resp = sr.ReadLine();
Console.WriteLine(resp);
string[] tokens = resp.Split(new Char[] {' '});

input = "quit" + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length);
Console.WriteLine(sr.ReadLine());

sr.Close();
ns.Close();
return tokens[1].ToInt32();
}
catch(InvalidOperationException ioe){
Console.WriteLine("Could not connect to mail server");
return 0;
}
}
public static void Main()
{
POP pop = new POP("pop-server", "loginname", "password");
Console.WriteLine("New Messages = {0}", pop.GetNumberOfNewMessages() );
Console.ReadLine();
}
}  

时间: 2024-10-26 21:55:14

如何使用C#访问POP3服务器(转)的相关文章

如何使用C#访问POP3服务器

访问|服务器 This is a follow up to my SMTP example that shows how to access your POP3 server. This program connects and logs on to your POP3 server, and checks to see how many new messages you have. The instantiation of the POP is in Main() like this: POP

开源IMAP和POP3服务器:Dovecot配置与使用

本文将介绍 Linux/UNIX 类系统平台上的开源 IMAP 和 POP3 服务器 -- Dovecot,以及其在 NFS 作为存储时解决缓存(caching)问题的方案 -- Dovecot Director.您将看到如何配置 Dovecot Director 以及 Dovecot Director 是如何工作的. What & Why Dovecot Dovecot 这个名词也许对于很多人都比较陌生,但是如果提到 Courier,Cyrus 或者 UW,那肯定很多人都有所耳闻.没错,Dov

请帮忙-访问wbsphere服务器有如下错误页异常该如何解决?求大神帮助

问题描述 访问wbsphere服务器有如下错误页异常该如何解决?求大神帮助 错误页异常 SRVE0260E: 服务器无法使用对应用程序指定的错误页来处理如下所示的原始异常. 原始异常: 错误消息: javax.servlet.ServletException: Filter [WSCUrlFilter]: com.ibm.ws.console.core.servlet.WSCUrlFilter was found, but is missing another required class. 错

java ldap-java 访问ldap服务器,把dn下的tree全部读取出来

问题描述 java 访问ldap服务器,把dn下的tree全部读取出来 java 访问ldap服务器,把dn下的tree全部读取出来 解决方案 参考下:http://www.blogjava.net/i369/articles/130019.html 解决方案二: 我是要读取全部数据,不是基本的操作.

功能类似于java.net访问http服务器程序

程序|访问|服务器 package net.sonyhome.net; import java.io.*;import java.net.*;import java.util.*;import java.text.*;/** * 一个用来访问http服务器的东西.功能类似于java.net中的那个.但要强,这个对Post方法的支持更好. * 其实也不能说是我写的.不记得从哪儿找来的程序,稍事修改了一下.所以现在程序的结构都忘啦. * 不过有一点是肯定的,那就是可以用.呵呵. * 去年我做的Jav

如何设置一个高容量的Linux POP3服务器

一: 概述 本文旨在介绍如何使用开放源软件Procmail和Qpopper来配置一台可供大量用户使用的POP3服务器,重点在于如何保持最佳的服务器性能. 二: 步骤 软件环境为RedHat Linux 7.1 1. 下载最新版的Procmail和Qpopper Procmail 最新版本现在是3.21 可从 http://www.procmail.org/procmail-3.21.tar.gz下载. Qpopper 最新版本现在是4.0 可从 http://www.eudora.com/qpo

不能访问Web服务器的解决方法

访问Web服务器是许多局域网用户经常要做的一项"功课",在频繁访问过程中,不少朋友积累了一些Web服务器访问经验,这些经验常常会帮助他们快速解决一些无法访问的小故障. 访问Web服务器是许多局域网用户经常要做的一项"功课",在频繁访问过程中,不少朋友积累了一些Web服务器访问经验,这些经验常常会帮助他们快速解决一些无法访问的小故障.不过,本文下面贡献出来的Web服务器不能访问故障现象却比较特别,如果不加细细分析,单纯以经验来解决故障时,多半容易走弯路:为了帮助各位朋

ASP.NET通过DSO访问分析服务器的权限问题

asp.net|访问|服务器|问题 ASP.NET中通过Decision Support Objects(DSO)访问分析服务器的权限问题 1. 引子 先看一段代码: public class WebForm1 : System.Web.UI.Page{    private void Button1_Click(object sender, System.EventArgs e)    {        DSO.Server dsoServer = new DSO.ServerClass();

Linux系统上架设一台高容量的POP3服务器

POP3(Post Office Protocol 3)即邮局协议的第3个版本,它规定怎样将个人计算机连接到互联网上的邮件服务器和下载电子邮件的电子协议.它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的.本文将介绍如何使用开源软件Procmail和Qpopper,在Linux系统上配置一台可供大量用户使用的POP3服务器. 1.下载Procmail和