首先去搜索下载w3 JMail v4.4 Professional 这个COM 组件,然后注册这个组件,jmail 的注册方法,运行命令行: regsvr32 e:/jmail/jmail.dll,最后添加引用这个组件就可以使用了。
//Jmail接收邮件处理类NJMail.cs
namespace
Common.NJMail
... {
public class POP3
...{
public delegate void MessagesEventHandler(MessagesState oMessagesState);
public delegate void AttachmentsEventHandler(AttachmentsState oAttachmentsState);
//异步事件
public event MessagesEventHandler MessagesReceiveAsync;
public event AttachmentsEventHandler AttachmentsReceiveAsync;
//同步事件
public event MessagesEventHandler MessageReceived;//一封邮件已收到本地
public event MessagesEventHandler MessageReceive;//一封邮件正到达
public event AttachmentsEventHandler AttachmentReceive;//一封邮件的附件正到达
//发生异常事件
public event MessagesEventHandler MessageException;
public event AttachmentsEventHandler AttachmentException;
private string _UserName;
private string _Password;
private string _Server;
private int _Port = 110;
private static object _LockObject = new object();
/**//// <summary>
/// 每次接收邮件的数量
/// </summary>
private int _mCount = 0;
public int MCount
...{
set
...{
this._mCount = value;
}
get
...{
return this._mCount;
}
}
/**//// <summary>
/// 接收邮件或附件重试次数
/// </summary>
private int _aRetryCount = 0;
public int RetryCount
...{
set
...{
this._aRetryCount = value;
}
get
...{
return this._aRetryCount;
}
}
/**//// <summary>
/// 是否删除服务器上已下载邮件
/// </summary>
private bool _bDelete = false;
public bool BDelete
...{
set
...{
this._bDelete = value;
}
get
...{
return this._bDelete;
}
}
构造函数#region 构造函数
/**//// <summary>
/// 带端口的构造函数
/// </summary>
/// <param name="UserName">用户名</param>
/// <param name="Password">密码</param>
/// <param name="Server">邮件服务器</param>
/// <param name="Port">端口</param>
public POP3(string UserName,string Password,string Server,int Port)
...{
this._UserName = UserName;
this._Password = Password;
this._Server = Server;
this._Port = Port;
}
/**//// <summary>
/// 默认110端口的构造函数
/// </summary>
/// <param name="UserName">用户名</param>
/// <param name="Password">密码</param>
/// <param name="Server">邮件服务器</param>
public POP3(string UserName,string Password,string Server)
...{
this._UserName = UserName;
this._Password = Password;
this._Server = Server;
}
#endregion
同步收邮件#region 同步收邮件
public void Execute()
...{
this.Execute(false);
}
#endregion
收邮件#region 收邮件
public void Execute(bool IsAsync)
...{
jmail.POP3Class pop3 = new jmail.POP3Class();
try
...{
pop3.Timeout = 0;
pop3.Connect(this._UserName,this._Password,this._Server,this._Port);
jmail.MessagesClass jms = (jmail.MessagesClass) pop3.Messages;
int I = jms.Count;
MessagesState omss = null;
for (int i = 0; i < I - 1 && i < this._mCount; i++)
...{
try
...{
jmail.MessageClass jmc = (jmail.MessageClass) jms[i+1];
omss = new
... {
public class POP3
...{
public delegate void MessagesEventHandler(MessagesState oMessagesState);
public delegate void AttachmentsEventHandler(AttachmentsState oAttachmentsState);
//异步事件
public event MessagesEventHandler MessagesReceiveAsync;
public event AttachmentsEventHandler AttachmentsReceiveAsync;
//同步事件
public event MessagesEventHandler MessageReceived;//一封邮件已收到本地
public event MessagesEventHandler MessageReceive;//一封邮件正到达
public event AttachmentsEventHandler AttachmentReceive;//一封邮件的附件正到达
//发生异常事件
public event MessagesEventHandler MessageException;
public event AttachmentsEventHandler AttachmentException;
private string _UserName;
private string _Password;
private string _Server;
private int _Port = 110;
private static object _LockObject = new object();
/**//// <summary>
/// 每次接收邮件的数量
/// </summary>
private int _mCount = 0;
public int MCount
...{
set
...{
this._mCount = value;
}
get
...{
return this._mCount;
}
}
/**//// <summary>
/// 接收邮件或附件重试次数
/// </summary>
private int _aRetryCount = 0;
public int RetryCount
...{
set
...{
this._aRetryCount = value;
}
get
...{
return this._aRetryCount;
}
}
/**//// <summary>
/// 是否删除服务器上已下载邮件
/// </summary>
private bool _bDelete = false;
public bool BDelete
...{
set
...{
this._bDelete = value;
}
get
...{
return this._bDelete;
}
}
构造函数#region 构造函数
/**//// <summary>
/// 带端口的构造函数
/// </summary>
/// <param name="UserName">用户名</param>
/// <param name="Password">密码</param>
/// <param name="Server">邮件服务器</param>
/// <param name="Port">端口</param>
public POP3(string UserName,string Password,string Server,int Port)
...{
this._UserName = UserName;
this._Password = Password;
this._Server = Server;
this._Port = Port;
}
/**//// <summary>
/// 默认110端口的构造函数
/// </summary>
/// <param name="UserName">用户名</param>
/// <param name="Password">密码</param>
/// <param name="Server">邮件服务器</param>
public POP3(string UserName,string Password,string Server)
...{
this._UserName = UserName;
this._Password = Password;
this._Server = Server;
}
#endregion
同步收邮件#region 同步收邮件
public void Execute()
...{
this.Execute(false);
}
#endregion
收邮件#region 收邮件
public void Execute(bool IsAsync)
...{
jmail.POP3Class pop3 = new jmail.POP3Class();
try
...{
pop3.Timeout = 0;
pop3.Connect(this._UserName,this._Password,this._Server,this._Port);
jmail.MessagesClass jms = (jmail.MessagesClass) pop3.Messages;
int I = jms.Count;
MessagesState omss = null;
for (int i = 0; i < I - 1 && i < this._mCount; i++)
...{
try
...{
jmail.MessageClass jmc = (jmail.MessageClass) jms[i+1];
omss = new