jmail 删除邮件的解决方案

/** jmail 删除邮件的解决方案 **/

/** 可实现,先下载到本地,需要时,再删除服务器端的指定邮件 **/

//测试邮箱地址为 recieveceshi@163.com

 

/* 建议先看下jmail“收取未读邮件”(未被客户端下载过的邮件)

* 删除邮件功能的实现思路如下:

* 和“收取未读邮件”类似,正常情况下,要删除邮件时,我们已经阅读过它

* 了,也就是,在已经把它下载到客户端(也就是本地),要想实现下载邮件

* 和删除邮件不同时进行(相对而言),需要在下载邮件时,将邮件在服务器

* 端的唯一标识(以下简称UID,保存为字符串)记录到本地数据库,当要删

* 除具体邮件时,要用到它。也就是,这个UID是必需在下载邮件的时候保存

* 下来的。下面假设已经把相关邮件的信息都下载到本地并保存过了,我们根

* 据本地信息删除邮件(删除本地记录,并把相应的服务器端邮件也删除)

* 关于UID,可以看下上面的那个链接。

*/

 

//删除邮件时,还是要创建jmail接收邮件类的实例

POP3 pop = new POP3();

try

{

    //创建连接

    //参数依次为:邮件名,密码,服务器地址

    pop.Connect("recieveceshi""qwerty""pop.163.com");

    //服务器端邮件总数量

    int emailCount = pop.Count;

 

    //取出本地保存的要删除邮件的UID

    //现在假设要删除的邮件UID为:1tbi6wPzIFEAN8qGyAAAsZ

    string localEmailUID = "1tbi6wPzIFEAN8qGyAAAsZ";

 

    //查看(遍历)服务器端所有邮件,符合条件就删除

    for (int i = 1; i <= emailCount; i++)

    {

        /* 索引要从1开始的,原因向下看就知道了。

        * jmail收取的邮件信息是按时间由小到大

        * 排序的(索引越小,收信的时间越早)。*/

 

        //获取指定邮件服务器端邮件UID。要注意的是,最小索引应该是1而不是0

        //此方法不需下载整封邮件,消耗网络资源较小

        string theUid = pop.GetMessageUID(i);

        if (theUid == localEmailUID)

        {

            //找到服务器端的一封邮件,把它删除

            pop.DeleteSingleMessage(i);

            //由于UID是邮件的唯一标记,

            //所以删除后就不用再循环了

            break;

        }

    }

 

    //要删除本地邮件,自定义一个方法,放在这里就可以了。

 

    //断开连接

    pop.Disconnect();

 

    MessageBox.Show("海上升明月,天涯共此时。");

}

catch

{

    MessageBox.Show("片云天共远,永夜月同孤。");

}

 

/*

* pop.DeleteMessages();

* 如果用这个方法的话,那就简单了,

* 直接调用,它就会把服务器端的邮件全删除的。

* 所以这个情况就不说了。

* 当然,如果可以下载邮件的同时,就把邮件给删除,

* 那直接在接收邮件并保存之后,用

* pop.DeleteSingleMessage(i)就行了,也是简单的

* 方法,也不说了。

*/

 

/**完成时间 2014-8-27**/


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值