发现下载回来的lumisoft组件版本好像比较新,把网上见到的代码用的函数都否决了。。
囧。。研究了半天,改了一点东西出来。
以下代码非完整程序代码,只是一些片段的截取和说明=_=
using LumiSoft . Net . IMAP . Client;
using LumiSoft.Net.IMAP;
static void Main ( ){
IMAP_Client IMAPServer = new IMAP_Client ( );
try
{
//连接邮件服务器通过传入邮件服务器地址和用于IMAP协议的端口号
IMAPServer . Connect ( @"imap.163.com" , 143 );
//登陆邮箱,前者帐号后者密码
IMAPServer . Login ("xyzlok@163.com" , @"****" );
//选中收件箱
IMAPServer . SelectFolder ( "INBOX" );
//取出收件箱
var folder = IMAPServer . SelectedFolder;
//收件箱邮件总数
folder . MessagesCount . ToString ( );
//收件箱未读邮件总数
folder . RecentMessagesCount . ToString ( ) ;
//以下开始取出邮件
//首先确定取第x到第n封邮件,"1:*"表示第1封到最后一封
var seqSet =LumiSoft . Net . IMAP . IMAP_t_SeqSet . Parse ( "1:*" );
//根据数组中的成员决定取出邮件的那些信息
var imap_t_Fetch_i = new IMAP_t_Fetch_i[]{
new IMAP_t_Fetch_i_Envelope(),//邮件的标题、正文等信息
new IMAP_t_Fetch_i_Flags(),//此邮件的标志,应该是已读未读标志
new IMAP_t_Fetch_i_InternalDate(),//貌似是收到的日期
new IMAP_t_Fetch_i_Rfc822(),//Rfc822是标准的邮件数据流,可以通过Lumisoft.Net.Mail.Mail_Message对象解析出邮件的所有信息(不确定有没有附件的内容)。
new IMAP_t_Fetch_i_Uid()};//返回邮件的UID号,UID号是唯一标识邮件的一个号码
//创建一个符合lumisoft的回调函数的委托。
//当调用fetch函数完成时,会自动调用用户自定义的函数,这里是Fetchcallback(我自己起的名字,名字无意义,保证参数是object,LumiSoft . Net . EventArgs<IMAP_r_u> 两个就好
EventHandler<LumiSoft.Net.EventArgs<IMAP_r_u>> lumisoftHandler = new EventHandler<LumiSoft . Net . EventArgs<IMAP_r_u>> ( Fetchcallback);
//把上边定义好的参数传入fetch函数,就会取出邮件
//lumisoftHandler指向的函数在每取出一封邮件的时候会被触发一次
IMAPServer . Fetch ( false , seqSet , imap_t_Fetch_i , lumisoftHandler );
}
catch ( Exception ex )
{
throw ex;
}
finally
{
IMAPServer . Disconnect ( );
}
}//到这里Main函数结束了
//用来被回调的函数
public static void Fetchcallback( object sender , LumiSoft . Net . EventArgs<IMAP_r_u> eventArgs )
{
//把传入参数重新封装,用于取出邮件的相关信息
IMAP_r_u_Fetch x = eventArgs . Value as IMAP_r_u_Fetch;
//这是邮件的标题
//能有效地取出神马除了取决于邮件本身外,还受到上文imap_t_Fetch_i数组中成员的影响
MessageBox . Show ( x . Envelope . Subject );
var st = y . Value . Rfc822.Stream;
st . Position = 0;
LumiSoft.Net.Mail.Mail_Message mime = LumiSoft . Net . Mail . Mail_Message . ParseFromStream ( st );
MessageBox . Show ( mime . BodyText );
//mime里边还有很多对象可以自己挖掘
}