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

王朝c#·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

//希望通过这篇文章,你可以用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();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航