如何使用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 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();
}
}
内容:
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();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货