一个基于 .NET 2.0 System.Net.Mail namespace 的邮件发送接收组件,参考了以前网上一些基于 System.Web.Mail namespace 例子。



/**//********************************************
*
* description: 基于 .NET 2.0 System.Net.Mail namespace
* 的邮件发送接收组件
*
* author: yyw84
*
* blogs: http://yyw84.cnblogs.com/
*
* Date: 2006-5-4
*
********************************************/

using System;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Threading;
using System.Net.Sockets;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Net.Configuration;
using System.Configuration;

namespace Mailer.Components


{

邮件接收类#region 邮件接收类


/**//// <summary>
/// 邮件接收类
/// </summary>
public class POP3

{

Fields#region Fields

string POPServer;
string mPOPUserName;
string mPOPPass;
int mPOPPort;
NetworkStream ns;
StreamReader sr;

#endregion


Constructors#region Constructors


/**//// <summary>
/// POP3
/// </summary>
/// <param name="server">POP3服务器名称</param>
/// <param name="userName">用户名</param>
/// <param name="password">用户密码</param>
public POP3(string server, string userName, string password)
: this(server, 110, userName, password)

{
}


/**//// <summary>
/// POP3
/// </summary>
/// <param name="server">POP3服务器名称</param>
/// <param name="port">端口号</param>
/// <param name="userName">用户名</param>
/// <param name="password">用户密码</param>
public POP3(string server, int port, string userName, string password)

{
POPServer = server;
mPOPUserName = userName;
mPOPPass = password;
mPOPPort = port;
}

#endregion


Methods#region Methods


Public#region Public


/**//// <summary>
/// 获得新邮件数量
/// </summary>
/// <returns>新邮件数量</returns>
public int GetNumberOfNewMessages()

{
byte[] outbytes;
string input;

try

{
Connect();

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

string[] tokens = resp.Split(new Char[]
{ ' ' });

Disconnect();

return Convert.ToInt32(tokens[1]);
}
catch

{
return -1;
}
}


/**//// <summary>
/// 获取新邮件内容
/// </summary>
/// <param name="subj">邮件主题</param>
/// <returns>新邮件内容</returns>
public List<MailMessage> GetNewMessages(string subj)

{

int newcount;
List<MailMessage> newmsgs = new List<MailMessage>();

try

{
newcount = GetNumberOfNewMessages();
Connect();

for (int n = 1; n < newcount + 1; n++)

{
List<string> msglines = GetRawMessage(n);
string msgsubj = GetMessageSubject(msglines);
if (msgsubj.CompareTo(subj) == 0)

{
MailMessage msg = new MailMessage();
msg.Subject = msgsubj;
msg.From = new MailAddress(GetMessageFrom(msglines));
msg.Body = GetMessageBody(msglines);
newmsgs.Add(msg);
DeleteMessage(n);
}
}

Disconnect();
return newmsgs;
}
catch (Exception e)

{
return newmsgs;
}
}


/**//// <summary>
/// 获取新邮件内容
/// </summary>
/// <param name="nIndex">新邮件索引</param>
/// <returns>新邮件内容</returns>
public MailMessage GetNewMessages(int nIndex)

{
int newcount;
MailMessage msg = new MailMessage();

try

{
newcount = GetNumberOfNewMessages();
Connect();
int n = nIndex + 1;

if (n < newcount + 1)


/**//********************************************
*
* description: 基于 .NET 2.0 System.Net.Mail namespace
* 的邮件发送接收组件
*
* author: yyw84
*
* blogs: http://yyw84.cnblogs.com/
*
* Date: 2006-5-4
*
********************************************/
using System;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Threading;
using System.Net.Sockets;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Net.Configuration;
using System.Configuration;
namespace Mailer.Components

{
邮件接收类#region 邮件接收类

/**//// <summary>
/// 邮件接收类
/// </summary>
public class POP3
{
Fields#region Fields
string POPServer;
string mPOPUserName;
string mPOPPass;
int mPOPPort;
NetworkStream ns;
StreamReader sr;
#endregion

Constructors#region Constructors

/**//// <summary>
/// POP3
/// </summary>
/// <param name="server">POP3服务器名称</param>
/// <param name="userName">用户名</param>
/// <param name="password">用户密码</param>
public POP3(string server, string userName, string password)
: this(server, 110, userName, password)
{
}

/**//// <summary>
/// POP3
/// </summary>
/// <param name="server">POP3服务器名称</param>
/// <param name="port">端口号</param>
/// <param name="userName">用户名</param>
/// <param name="password">用户密码</param>
public POP3(string server, int port, string userName, string password)
{
POPServer = server;
mPOPUserName = userName;
mPOPPass = password;
mPOPPort = port;
}
#endregion

Methods#region Methods

Public#region Public

/**//// <summary>
/// 获得新邮件数量
/// </summary>
/// <returns>新邮件数量</returns>
public int GetNumberOfNewMessages()
{
byte[] outbytes;
string input;
try
{
Connect();
input = "stat" + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes, 0, outbytes.Length);
string resp = sr.ReadLine();
string[] tokens = resp.Split(new Char[]
{ ' ' });
Disconnect();
return Convert.ToInt32(tokens[1]);
}
catch
{
return -1;
}
}

/**//// <summary>
/// 获取新邮件内容
/// </summary>
/// <param name="subj">邮件主题</param>
/// <returns>新邮件内容</returns>
public List<MailMessage> GetNewMessages(string subj)
{
int newcount;
List<MailMessage> newmsgs = new List<MailMessage>();
try
{
newcount = GetNumberOfNewMessages();
Connect();
for (int n = 1; n < newcount + 1; n++)
{
List<string> msglines = GetRawMessage(n);
string msgsubj = GetMessageSubject(msglines);
if (msgsubj.CompareTo(subj) == 0)
{
MailMessage msg = new MailMessage();
msg.Subject = msgsubj;
msg.From = new MailAddress(GetMessageFrom(msglines));
msg.Body = GetMessageBody(msglines);
newmsgs.Add(msg);
DeleteMessage(n);
}
}
Disconnect();
return newmsgs;
}
catch (Exception e)
{
return newmsgs;
}
}

/**//// <summary>
/// 获取新邮件内容
/// </summary>
/// <param name="nIndex">新邮件索引</param>
/// <returns>新邮件内容</returns>
public MailMessage GetNewMessages(int nIndex)
{
int newcount;
MailMessage msg = new MailMessage();
try
{
newcount = GetNumberOfNewMessages();
Connect();
int n = nIndex + 1;
if (n < newcount + 1)

该组件基于.NET 2.0 System.Net.Mail namespace,支持邮件接收功能,包括获取新邮件数量及内容等。
1万+

被折叠的 条评论
为什么被折叠?



